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}")]

这两个缺一不可

相关推荐
少云清7 分钟前
【性能测试】15_JMeter _JMeter插件安装使用
开发语言·python·jmeter
二哈喇子!7 分钟前
Java框架精品项目【用于个人学习】
java·spring boot·学习
yj爆裂鼓手26 分钟前
c#万能变量
开发语言·c#
GGGG寄了29 分钟前
HTML——文本标签
开发语言·前端·html
yangSnowy37 分钟前
PHP变量回收机制
开发语言·php
二哈喇子!39 分钟前
基于SpringBoot框架的网上购书系统的设计与实现
java·大数据·spring boot
C+-C资深大佬1 小时前
C++类型判断
开发语言·c++
2501_944521591 小时前
Flutter for OpenHarmony 微动漫App实战:推荐动漫实现
android·开发语言·前端·javascript·flutter·ecmascript
不绝1911 小时前
C#进阶:委托
开发语言·c#
喜欢喝果茶.1 小时前
跨.cs 文件传值(C#)
开发语言·c#