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)