Overview
En esta guía, puede aprender sobre el controlador Rust APIasíncronas y síncronas. Esta guía explica cómo habilitar las API disponibles y estructurar el código para usar cada una.
El controlador Rust admite tokio y async-std, dos entornos de ejecución asíncronos populares. De forma predeterminada, el controlador utiliza el entorno de ejecución asíncrono tokio, pero puede seleccionar un entorno de ejecución específico añadiendo indicadores de características a la dependencia mongodb en su archivo Cargo.toml.
El controlador también incluye una API síncrona para casos de uso que requieren bloqueo o cuando no se requiere paralelismo. Puede seleccionar la API síncrona añadiendo indicadores de función a la dependencia mongodb en su archivo Cargo.toml.
Configurar el tiempo de ejecución asincrónico
El controlador usa el entorno de ejecución tokio de forma predeterminada. Puede elegir un entorno de ejecución explícitamente añadiendo los indicadores de función "tokio-runtime" o "async-std-runtime" a la dependencia mongodb.
Seleccione una de las siguientes pestañas para ver cómo agregar indicadores de características para cada caja correspondiente:
[dependencies.mongodb] version = "2.8.2" features = ["tokio-runtime"]
[dependencies.mongodb] version = "2.8.2" default-features = false features = ["async-std"]
Para obtener más información sobre cómo instalar el controlador y agregar indicadores de funciones, consulte la Paso de descarga e instalación del inicio rápido.
Ejemplo de tiempo de ejecución de Tokio
El siguiente código utiliza el módulo task del paquete tokio para crear tareas simultáneas e independientes para múltiples operaciones de datos:
let client = Client::with_uri_str("<connection string>").await?; let some_data = doc! { "title": "1984", "author": "George Orwell" }; for i in 0..5 { let client_ref = client.clone(); let somedata_ref = some_data.clone(); task::spawn(async move { let collection = client_ref .database("items") .collection::<Document>(&format!("coll{}", i)); collection.insert_one(somedata_ref, None).await }); }
Configurar la API sincrónica
El controlador también proporciona una API síncrona de bloqueo. Para usar la API síncrona, agregue el indicador de función "sync" o "tokio-sync" a la dependencia mongodb.
Seleccione una de las siguientes pestañas para ver cómo agregar indicadores de características para cada caja correspondiente:
[dependencies.mongodb] version = "2.8.2" default-features = false features = ["sync"]
[dependencies.mongodb] version = "2.8.2" default-features = false features = ["tokio-sync"]
Ejemplo de código sincrónico
Al usar la API síncrona, utilice los tipos del módulo mongodb::sync para realizar operaciones. El siguiente código usa el módulo sync para insertar datos en una colección mediante la API síncrona. Cuando el método insert_one se ejecuta dentro del bucle for, el controlador espera a que se complete cada solicitud antes de continuar.
use mongodb::sync::Client; fn main() { let client = Client::with_uri_str("<connection string>")?; let some_data = doc! { "title": "1984", "author": "George Orwell" }; for i in 0..5 { let client_ref = client.clone(); let somedata_ref = some_data.clone(); let collection = client_ref .database("items") .collection::<Document>(&format!("coll{}", i)); collection.insert_one(somedata_ref, None); } }
Utilice API asincrónicas y sincrónicas
Puede usar API asíncronas y síncronas en la misma aplicación. Por ejemplo, para habilitar ambos entornos de ejecución tokio, puede agregar la dependencia tokio a su lista de dependencias y el indicador "tokio-sync" a la dependencia mongodb:
[dependencies] futures = "0.3.28" tokio = {version = "1.32.0", features = ["full"]} [dependencies.mongodb] version = "2.8.2" features = ["tokio-sync"]
Información Adicional
Para obtener más información sobre los conceptos de esta guía, consulte las siguientes páginas:
Documentación de la API
Para obtener más información sobre los métodos y tipos mencionados en esta guía, consulte la siguiente documentación de API: