gpt4 book ai didi

rust - 如何将 rust snafu 错误枚举移动到一个模块中并从另一个模块中使用它?

转载 作者:行者123 更新时间:2023-12-03 11:48:07 36 4
gpt4 key购买 nike

我正在将一个巨大的文件分解为模块,在我分解它之前一切正常,现在 Snafu 错误处理将无法编译。
实用程序.rs:

#[derive(Debug, Snafu)]
pub enum Error {
#[snafu(display("The start time {:#?} is invalid: {:#?}", start, source))]
StartTimeInvalid {
start: SystemTime,
source: SystemTimeError,
backtrace: Backtrace,
},
#[snafu(display("error: {}", desc))]
Any { desc: String },
}

pub trait Elapsed {
fn elapsed(&self) -> Result<u128, Error>;
}
计时器.rs:
pub struct Timer {
start: SystemTime,
}

impl Timer {
pub fn new() -> Self { Self { start: SystemTime::now() } }
}
impl Elapsed for Timer {
fn elapsed(&self) -> Result<u128, Error> {
let start = self.start;
Ok(start.elapsed().context( Error::StartTimeInvalid{ start })?.as_nanos())
}
}
我得到 context() 的两个编译器错误是:
  • 缺少 backtrace , source
  • 特质 snafu::IntoError<_>未针对 util::util::Error 实现

  • 我怀疑我需要导入其他东西,但不知道它可能是什么。

    最佳答案

    解决了。

    #[derive(Debug, Snafu)]
    #[snafu(visibility = "pub")]
    pub enum Error {
    然后将其添加到使用它的模块中
    use crate::util::StartTimeInvalid;

    关于rust - 如何将 rust snafu 错误枚举移动到一个模块中并从另一个模块中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63064984/

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