繁体   English   中英

返回结果&lt;(), 框<dyn Error> &gt; 生锈

[英]Returning Result<(), Box<dyn Error>> in rust

我在 golang 中有一个函数 -


func (s *Server) getEnforcer(handle int) (*casbin.Enforcer, error) {
    if _, ok := s.enforcerMap[handle]; ok {
        return s.enforcerMap[handle], nil
    } else {
        return nil, errors.New("enforcer not found")
    }
}

我正在尝试在 Rust 中实现这一点。 我写了这个——

impl Server {
    fn getEnforcer(&mut self, handle: i32) -> Result<Enforcer, Box<dyn Error>> {
        let e: Enforcer = self.enforcerMap[&handle];
        // match ..
    }
}

无法弄清楚如何处理错误。

更好的是,返回一个选项,因为唯一可能的错误是地图中不存在索引,

所以..

impl Server {
    pub fn getEnforcer(&self,handle:i32)->Option<&Enforcer> {
        self.enforcerMap.get(&handle)
    }
    pub fn getEnforcerMut(&mut self,handle:i32)->Option<&mut Enforcer> {
        self.enforcerMap.get_mut(&handle)
    }
}

但是我强烈建议 这个链接这个链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM