簡體   English   中英

為ParseIntError實現From特性

[英]Implementing the From trait for a ParseIntError

使用時試試! 宏,它使用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())}
    }
}

這很適合嘗試! 在任何東西上。 但是現在進行解析:

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 您可以通過在代碼中用std替換core來解決錯誤:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM