

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usar resultados paginados no AWS SDK para Rust
<a name="paginating"></a>

Muitas operações AWS retornam resultados truncados quando a carga útil é muito grande para ser retornada em uma única resposta. Em vez disso, o serviço retorna uma parte dos dados e um token para recuperar o próximo conjunto de itens. Esse padrão é conhecido como paginação. 

O AWS SDK para Rust inclui métodos de extensão de `into_paginator` em construtores de operações que podem ser usados para paginar automaticamente os resultados para você. Você precisa somente escrever o código que processará os resultados. Todos os criadores de operações de paginação têm um método de `into_paginator()` disponível que expõe um [https://docs.rs/aws-smithy-async/latest/aws_smithy_async/future/pagination_stream/struct.PaginationStream.html](https://docs.rs/aws-smithy-async/latest/aws_smithy_async/future/pagination_stream/struct.PaginationStream.html) para realizar a paginação dos resultados.
+ No Amazon S3, um exemplo disso é [https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/operation/list_objects_v2/builders/struct.ListObjectsV2FluentBuilder.html#method.into_paginator](https://docs.rs/aws-sdk-s3/latest/aws_sdk_s3/operation/list_objects_v2/builders/struct.ListObjectsV2FluentBuilder.html#method.into_paginator). 

Os exemplos a seguir usam o Amazon Simple Storage Service. No entanto, os conceitos são os mesmos para qualquer serviço que tenha uma ou mais APIs paginadas. 

 O seguinte exemplo de código mostra o exemplo mais simples que usa o método [https://docs.rs/aws-smithy-async/latest/aws_smithy_async/future/pagination_stream/struct.PaginationStream.html#method.try_collect](https://docs.rs/aws-smithy-async/latest/aws_smithy_async/future/pagination_stream/struct.PaginationStream.html#method.try_collect) para coletar todos os resultados paginados em um `Vec`: 

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .load()
    .await;

let s3 = aws_sdk_s3::Client::new(&config);

let all_objects = s3.list_objects_v2()
    .bucket("my-bucket")
    .into_paginator()
    .send()
    .try_collect()
    .await?
    .into_iter()
    .flat_map(|o| o.contents.unwrap_or_default())
    .collect::<Vec<_>>();
```

Às vezes, você quer ter mais controle sobre a paginação e não colocar tudo na memória de uma só vez. O exemplo a seguir itera sobre objetos em um bucket do Amazon S3 até que não haja mais objetos.

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .load()
    .await;

let s3 = aws_sdk_s3::Client::new(&config);

let mut paginator = s3.list_objects_v2()
    .bucket("my-bucket")
    .into_paginator()
    // customize the page size (max results per/response)
    .page_size(10)
    .send();

println!("Objects in bucket:");

while let Some(result) = paginator.next().await {
    let resp = result?;
    for obj in resp.contents() {
        println!("\t{:?}", obj);
    }
}
```