首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何生成error::Error实例?

如何生成error::Error实例?
EN

Stack Overflow用户
提问于 2021-05-07 00:59:25
回答 1查看 51关注 0票数 0

我正在实现一个函数作为特征的一部分,如下所示:

代码语言:javascript
复制
impl TryFrom<(i16, i16, i16)> for Color {
    type Error = Box<dyn error::Error>;
    fn try_from(tuple: (i16, i16, i16)) -> Result<Self, Self::Error> {

        if tuple.0 < 0 || tuple.1 < 0 || tuple.2 < 0 || tuple.0 > 255 || tuple.1 > 255 || tuple.2 >255 {
            return Err(Box::new(error::Error)); //how do I generate an instance of an error?
        }

        let c = Self { red: tuple.0 as u8, green: tuple.1 as u8, blue: tuple.2 as u8 };
        Ok(c)
    }
}

而且我不知道如何在if语句中生成错误的实例。我已经尝试了下面所有的方法,但都不起作用。编译器就是不高兴。

代码语言:javascript
复制
Err(Box::new(error::Error));
Err(Box::new(Error));
Err(Box::new(error::Error::new()));
Err(Box::new(error::Error::new("123")));

我已经在std::error::Error上查找了docs,但是我找不到答案。我是个生锈新手,如果这很愚蠢,请原谅。

如果我有一些根本性的误解,请让我知道/指出我可以阅读的资源。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-07 01:12:01

std::error::Error是一个特征,而不是一个类型,所以您不能直接创建它的实例。您需要选择实现特征的现有类型(或编写新类型),并使用该类型。一种方便的错误类型是std::io::Error,您可以像这样使用它:

代码语言:javascript
复制
use std::io;

return Err(Box::new(io::Error::new(io::ErrorKind::Other, "your message here")));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67422765

复制
相关文章

相似问题

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