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

这两个缺一不可

相关推荐
q***57749 分钟前
Spring Boot 实战:轻松实现文件上传与下载功能
java·数据库·spring boot
q***563813 分钟前
Spring Boot 集成 Kettle
java·spring boot·后端
stevenzqzq13 分钟前
android recyclerview缓存_缓存问题解决办法
android·java·缓存
武子康13 分钟前
Java-174 FastFDS 从单机到分布式文件存储:实战与架构取舍
java·大数据·分布式·性能优化·系统架构·dfs·fastdfs
失散1315 分钟前
分布式专题——56 微服务日志采集与分析系统实战
java·分布式·微服务·架构
失散1319 分钟前
分布式专题——57 如何保证MySQL数据库到ES的数据一致性
java·数据库·分布式·mysql·elasticsearch·架构
MediaTea30 分钟前
Python 第三方库:OpenPyXL(Excel 文件读写与操作)
开发语言·python·excel
点云SLAM34 分钟前
C++ 中dynamic_cast使用详解和实战示例
开发语言·c++·类型转换·dynamic_cast·c++多态·c++继承
CodeByV1 小时前
【C++】C++11:右值引用和移动语义
开发语言·c++
会编程的吕洞宾1 小时前
Java Set集合:你的数据去重神器
java·后端·程序员