Alguns serviços retornam listas potencialmente grandes de itens, como linhas ou descrições de recursos. Para manter o uso da CPU e da memória sob controle, os serviços retornam esses recursos em pages: subconjuntos menores dos itens com um token de continuação para solicitar o próximo subconjunto.
A iteração de itens por página pode ser tediosa. As bibliotecas de cliente fornecem adaptadores para converter as páginas em iteradores assíncronos. Este guia mostra como trabalhar com esses adaptadores.
Pré-requisitos
Este guia usa o serviço do Secret Manager para demonstrar operações de lista. Os conceitos incluídos neste guia também se aplicam a outros serviços.
Para seguir este guia, você precisa ter ativado o serviço do Secret Manager, feito login e garantido que sua conta tenha as permissões necessárias. Para orientações sobre como atender a esses pré-requisitos, siga o início rápido do serviço.
Para instruções completas de configuração das bibliotecas Rust, consulte Como configurar o ambiente de desenvolvimento.
Dependências
Adicione a biblioteca do Secret Manager ao arquivo Cargo.toml:
cargo add google-cloud-secretmanager-v1
Como iterar métodos de lista
Para ajudar a iterar os itens em um método de lista, as APIs retornam uma implementação da característica ItemPaginator. Introduza a característica no escopo usando uma declaração use:
Para iterar os itens, use o método by_item.
Em casos raros, as páginas podem conter informações extras a que você precisa acessar ou pode ser necessário verificar o progresso em processos. Se necessário, você pode iterar páginas inteiras em vez de itens individuais.
Introduza
Paginatorno escopo usando uma declaraçãouse:Itere as páginas usando
by_page:
Como trabalhar com futures::Stream
Talvez você queira usar essas APIs no ecossistema Rust maior de streams assíncronos, como tokio::Stream. Isso pode ser feito da seguinte maneira:
Ative o recurso
unstable-streamsno pacotegoogle_cloud_gax. O nome desse recurso serve como aviso de que essas APIs são instáveis. Use-as apenas se você estiver preparado para lidar com interrupções resultantes de mudanças incompatíveis na característicafutures::Stream.cargo add google-cloud-gax --features unstable-streamOs exemplos a seguir também usam a
futures::stream::StreamExtcaracterística, que você ativa adicionando ofuturespacote.cargo add futuresAdicione as declarações
usenecessárias:Use a função
into_streampara converterItemPaginatorem umfutures::Stream.
Da mesma forma, você pode usar a função into_stream para converter Paginator em um futures::Stream.
Como retomar métodos de lista definindo o token da próxima página
Em alguns casos, como uma operação de lista interrompida, você pode definir o token da próxima página para retomar a paginação de uma página específica.
Quando usar os auxiliares do paginador
As Google Cloud bibliotecas de cliente para Rust fornecem um adaptador para converter as
RPCs de lista definidas por AIP-4233 em tipos que implementam ItemPaginator e
Paginator se o método Google API List seguir a diretriz de paginação
definida por AIP-158. Em resumo, essa diretriz exige que cada chamada para um método List retorne uma página de itens de recursos (por exemplo, secrets) junto com um token que pode ser transmitido ao método List para recuperar a próxima página.
A maioria dos Google Cloud serviços segue essas diretrizes. Nos casos em que isso não acontece, você precisa implementar seu próprio adaptador para iterar os resultados.