• unistart
    2024-09-10 来自湖南
    build_driver方法根据auth的存储类型,构建响应的适配器类对象 Rust中常用Option<T>和Result<T, E>这来处理函方法的返回值可能出现空值或者错误的情况 Option和Result都是Rust标准库中定义的枚举类型 Option的两个变体:1、Some(T) 代表有T类型的值 2、None 表示没有值 Result的两个变体:1、Ok(T) 代表处理成功,包含T类型返回 2、Err(E) 代表处理失败,包含错误信息返回 对于Result<Arc<dyn AuthStorageAdapter + Send + 'static + Sync>, RobustMQError>来说 T泛型指的就是:Arc<dyn AuthStorageAdapter + Send + 'static + Sync> E泛型指的就是:RobustMQError 如果build_driver执行成功,那么它的返回值的共同点是都实现了AuthStorageAdapter这个Trait,但是Rust不能直接将一个Trait类型作为返回对象,因为Trait的大小在编译期无法确定,所以需要加上dyn表明它是一个Trait Object这样大小就确定了(也就是所谓的动态派发),Send、Sync都是标记Trait,表明满足这些Trait约束的对象可以安全的在多个线程中进行传输(转移值的所有权,共享读取某个值等),同时由于有多线程操作的需要,因此在外层再套了一层Arc智能指针用于多线程下的引用计数
    展开
    
    
  • 空de
    2024-09-10 来自北京
    努力努力
    
    
  • CengNing
    2024-09-10 来自上海
    期待后续输出
    
    
  • Gojustforfun
    2024-09-09 来自北京
    pub struct MySQLAuthStorageAdapter { } impl MySQLAuthStorageAdapter { pub fn new() -> Self { return PlacementAuthStorageAdapter {}; // 这里有问题 } }
    
    