gpt4 book ai didi

rust - 为 ParseIntError 实现 From 特性

转载 作者:行者123 更新时间:2023-11-29 08:12:50 24 4
gpt4 key购买 nike

使用时试试!宏,它使用 From 特性将错误转换为所需的错误。

我想把一些错误转化成我自己的类型。这非常适合例如io::Error,但我无法让它处理来自核心的错误类型。

use std::io;

pub struct ParserError {
pub message: String,
}

impl From<io::Error> for ParserError {
fn from(e: io::Error) -> ParserError {
ParserError{message: format!("Generic IO error: {}", e.description())}
}
}

这很适合尝试!在任何 io 上。但现在解析:

fn parse_string(s: &str) -> Result<u64, ParserError> {
let i = try!(s.parse::<u64>());
return Ok(i);
}

我的错误是:

错误:特征 core::convert::From<parser::ParserError>没有为类型 `core::num::ParseIntError

实现

我试图实现这个来自:

impl From<core::num::ParseIntError> for ParserError {
fn from(_: core::num::ParseIntError) -> ParserError {
ParserError{message: "Invalid data type".to_string()}
}
}

但我无法导入核心。如何做到这一点?

最佳答案

来自 core 的模块由 std 重新导出。您可以通过在代码中将 core 替换为 std 来修复错误:

impl From<std::num::ParseIntError> for ParserError {
fn from(_: std::num::ParseIntError) -> ParserError {
ParserError{message: "Invalid data type".to_string()}
}
}

关于rust - 为 ParseIntError 实现 From 特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31405277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com