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

这两个缺一不可

相关推荐
雨中飘荡的记忆13 分钟前
深度详解Spring Context
java·spring
Tao____17 分钟前
JAVA开源物联网平台
java·物联网·mqtt·开源·ruoyi
Lhuu(重开版28 分钟前
JS:正则表达式和作用域
开发语言·javascript·正则表达式
yqd66632 分钟前
SpringSecurity的使用
java·spring
仙俊红44 分钟前
Java Map 家族核心解析
java·开发语言
浅念-1 小时前
C语言小知识——指针(3)
c语言·开发语言·c++·经验分享·笔记·学习·算法
一嘴一个橘子1 小时前
springMvc 接收参数、cookie、header
java
code_li2 小时前
聊聊支付宝架构
java·开发语言·架构
少控科技2 小时前
QT高阶日记01
开发语言·qt
CC.GG3 小时前
【Linux】进程概念(五)(虚拟地址空间----建立宏观认知)
java·linux·运维