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

这两个缺一不可

相关推荐
带鱼吃猫6 小时前
C++STL:从 0 到 1 手写 C++ string以及高频易错点复盘
开发语言·c++
u0109272716 小时前
代码覆盖率工具实战
开发语言·c++·算法
计算机毕设指导66 小时前
基于微信小程序的智能停车场管理系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
码云数智-大飞6 小时前
零拷贝 IPC:用内存映射文件打造 .NET 高性能进程间通信队列
java·开发语言·网络
懈尘6 小时前
深入理解Java的HashMap扩容机制
java·开发语言·数据结构
indexsunny6 小时前
互联网大厂Java面试实战:从Spring Boot到Kafka的技术与业务场景解析
java·spring boot·redis·面试·kafka·技术栈·microservices
Beginner x_u6 小时前
JavaScript 核心知识索引(面试向)
开发语言·javascript·面试·八股
roman_日积跬步-终至千里6 小时前
【Java并发】Tomcat 与 Spring:后端项目中的线程与资源管理
java·spring·tomcat
独自破碎E6 小时前
IDEA 提示“未配置SpringBoot配置注解处理器“的解决方案
java·spring boot·intellij-idea
yqd6666 小时前
RabbitMQ用法和面试题
java·开发语言·面试