小编Ram*_*sen的帖子

如何在 Rust 中将 Future 的生命周期绑定到 fn 参数

run_transaction我正在尝试为 Rust MongoDB 驱动程序编写一个简单的函数

该函数尝试通过 mongo db 客户端执行事务,并在遇到可重试错误时重试该事务

这是该函数的最小可重现示例。

use mongodb::{Client, Collection, ClientSession};
use mongodb::bson::Document;
use std::future::Future;

pub enum Never {}

fn main() {
    run_transaction(|mut session| async move {
        let document = collection().find_one_with_session(None,  None, &mut session).await?.unwrap();
        let r: Result<Document, TransactionError<Never>> = Ok(document);
        return r;
    });
}

fn collection() -> Collection<Document> {
    unimplemented!();
}

fn client() -> Client {
    unimplemented!();
}

pub enum TransactionError<E> {
    Mongodb(mongodb::error::Error),
    Custom(E)
}

impl<T> From<mongodb::error::Error> for TransactionError<T> {
    fn from(e: mongodb::error::Error) -> Self {
        TransactionError::Mongodb(e) …
Run Code Online (Sandbox Code Playgroud)

asynchronous future mongodb rust

2
推荐指数
1
解决办法
961
查看次数

标签 统计

asynchronous ×1

future ×1

mongodb ×1

rust ×1