Alguns serviços retornam listas potencialmente grandes de itens, como linhas ou descrições de recursos. Para manter o uso de CPU e uso 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.
Iterar itens por página pode ser cansativo. 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 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 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 guia de início rápido do serviço.
Para instruções completas de configuração das bibliotecas Rust, consulte Como configurar seu ambiente de desenvolvimento.
Dependências
Adicione a biblioteca do Secret Manager ao arquivo Cargo.toml:
cargo add google-cloud-secretmanager-v1
Iteração de 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 que você precisa acessar, ou talvez seja necessário verificar seu progresso em vários 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:
Trabalhando com futures::Stream
Talvez você queira usar essas APIs no ecossistema Rust maior de fluxos
assíncronos, como tokio::Stream. Isso pode ser feito da seguinte forma:
Ative o recurso
unstable-streamsna caixagoogle_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 característica
futures::stream::StreamExt, que é ativada ao adicionar a caixafutures.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.
Retomar métodos de lista definindo o token da próxima página
Em alguns casos, como uma operação de lista interrompida, é possível definir o token da próxima página para retomar a paginação de uma página específica.
Quando usar os helpers do paginador
As bibliotecas de cliente Google Cloud para Rust fornecem um adaptador para converter as RPCs de lista, conforme definido por AIP-4233, em tipos que implementam ItemPaginator e Paginator se o método Lista de APIs do Google seguir a diretriz de paginação definida por AIP-158. Em resumo, essa diretriz exige que cada chamada a 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 serviços do Google Cloud segue essas diretrizes. Caso contrário, você precisa implementar seu próprio adaptador para iterar os resultados.