首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回Result<(),rust中的Box<dyn Error>>

返回Result<(),rust中的Box<dyn Error>>
EN

Stack Overflow用户
提问于 2021-06-25 09:41:32
回答 1查看 262关注 0票数 0

我在golang有一个函数-

代码语言:javascript
复制
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中实现这一点。我写了这个-

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

不知道如何处理错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-25 11:35:45

更好的方法是返回一个选项,因为唯一可能的错误是索引不存在于映射中,

所以..。

代码语言:javascript
复制
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)
    }
}

不过,我强烈建议您使用this linkthis link

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68124433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档