rust中的thiserror详细理解

复制代码
use anyhow::{bail, Context, Error, Result};
use std::{boxed, fs};
use std::io::Read;
use thiserror::Error;

// #[derive(Clone, Debug, Eq, Error, PartialEq)]
// #[error("Found no username in {0}")]
#[derive(Debug,Error)]
#[error("Found no username in {0}")]
struct EmptyUsernameError(String);

fn read_username(path: &str) ->Box<dyn std::error::Error>{

        return Box::new(EmptyUsernameError(path.to_string()));

}

fn main() {
    //fs::write("config.dat", "").unwrap();
    println!("{:?}", read_username("config.dat")) ;
}

结合https://docs.rs/thiserror/latest/thiserror/ 一起看。

#[derive(Debug,Error)] #[error("Found no username in {0}")]

这两个缺一不可

相关推荐
野生技术架构师5 分钟前
Java面试题及答案总结(互联网大厂新版)
java·面试·状态模式
a努力。6 分钟前
小红书Java面试被问:ThreadLocal 内存泄漏问题及解决方案
java·jvm·后端·算法·面试·架构
此生只爱蛋7 分钟前
【Redis】String 字符串
java·数据库·redis
C++业余爱好者7 分钟前
Java开发中Entity、VO、DTO、Form对象详解
java·开发语言
zmzb01038 分钟前
C++课后习题训练记录Day50
开发语言·c++
froginwe119 分钟前
`.toggleClass()` 方法详解
开发语言
lsx20240610 分钟前
SQLite 附加数据库详解
开发语言
catchadmin12 分钟前
PHP 开发者指南 如何在 Composer 中使用本地包
开发语言·php·composer
被AI抢饭碗的人12 分钟前
linux:线程同步与互斥
linux·开发语言
超级大只老咪14 分钟前
“和”与“或”逻辑判断与条件取反(Java)
java·算法