首页 > 其他分享 >[Rust] Using .map_err instead of wrap which cause panic

[Rust] Using .map_err instead of wrap which cause panic

时间:2024-03-04 21:33:04浏览次数:18  
标签:map CreationError err parse test ParsePosNonzeroError panic fn

// Using catch-all error types like `Box<dyn error::Error>` isn't recommended
// for library code, where callers might want to make decisions based on the
// error content, instead of printing it out or propagating it further. Here, we
// define a custom error type to make it possible for callers to decide what to
// do next when our function returns an error.

use std::num::ParseIntError;

// This is a custom error type that we will be using in `parse_pos_nonzero()`.
#[derive(PartialEq, Debug)]
enum ParsePosNonzeroError {
    Creation(CreationError),
    ParseInt(ParseIntError),
}

impl ParsePosNonzeroError {
    fn from_creation(err: CreationError) -> ParsePosNonzeroError {
        ParsePosNonzeroError::Creation(err)
    }
    fn from_parseint(err: ParseIntError) -> ParsePosNonzeroError {
        ParsePosNonzeroError::ParseInt(err)
    }
}

fn parse_pos_nonzero(s: &str) -> Result<PositiveNonzeroInteger, ParsePosNonzeroError> {
    // let x: i64 = s.parse().unwrap; // 

标签:map,CreationError,err,parse,test,ParsePosNonzeroError,panic,fn
From: https://www.cnblogs.com/Answer1215/p/18052747

相关文章

  • [Rust] Using Box<dyn error::Error>> return one of miultiple error types at runti
    usestd::error;usestd::fmt;usestd::num::ParseIntError;fnmain()->Result<(),Box<dynerror::Error>>{letpretend_user_input="42";letx:i64=pretend_user_input.parse()?;println!("output={:?}",Po......
  • vite+vue3 遇到报错 Uncaught SyntaxError: Cannot use import statement outside a m
    按照报错找到了对应的位置import{createApp}from'/node_modules/.vite/deps/vue.js?v=d0a669cf'importAppfrom'/src/pages/project1/App.vue'//import'./index.css'//importrouterfrom"./router"//createApp(App).mount(&#......
  • pytnon -- 解决在excel使用pyxll-jupyter时读取excel文件出现”OSError: [Errno 22] I
     在jupyter中运行以下代码:importpandasaspddataset=pd.read_excel(r'‪D:\a.xlsx',sheet_name='Sheet1')print(dataset)出现报错信息:---------------------------------------------------------------------------OSError......
  • 19 SWERC 2022-2023 - Online Mirror (Unrated, ICPC Rules, Teams Preferred)L. Cont
    L.Controllers思路:#include<bits/stdc++.h>#defineintlonglong#definerep(i,a,b)for(inti=(a);i<=(b);++i)#definefep(i,a,b)for(inti=(a);i>=(b);--i)#define_for(i,a,b)for(inti=(a);i<(b);++i)#definepiipair&......
  • 接口测试-json文件读取报java.lang.ClassCastException: java.util.LinkedHashMap can
    问题原因:从json文件中读取的信息为hashMap,与预期(类对象)格式不匹配,无法解析。问题分析:json文件包含一个json串列表,代表向接口中传递不同的参数组合,通过下面方法读取json文件信息,反序列化成类对象,并把这些赋值的对象进行接口请求参数进行传递。publicList<T>getReadValuesLi......
  • AutoMapper
    AutoMapper的实现,与应用AutoMapper是一个简单的小库,旨在解决一个看似复杂的问题-摆脱将一个对象映射到另一个对象的代码,比如说当我用前台传来的DTO需要映射到实体的时候,我们总不能一个一个赋值,100个字段,200个字段呢,这里映射代码就很无聊,也很费时间,所有我们用到AutoMapper......
  • 配置AutoMapper
    配置AutoMapperAutoMapper是一个开源的.NET库,用于自动将一个对象的属性映射到另一个对象的属性。它能够简化对象之间的映射过程,减少手动编写重复的映射代码,提高开发效率。1、在需要的层引包(Api和Services层)2、program注入3、在api创建一个文件夹和一个类4、在创建的类里写......
  • AutoMapper
    AutoMapper的实现,与应用AutoMapper是一个简单的小库,旨在解决一个看似复杂的问题-摆脱将一个对象映射到另一个对象的代码,比如说当我用前台传来的DTO需要映射到实体的时候,我们总不能一个一个赋值,100个字段,200个字段呢,这里映射代码就很无聊,也很费时间,所有我们用到AutoMapper......
  • [转帖]HTTP 请求头的 Referrer-Policy 到底是什么?
    https://juejin.cn/post/7005209278592073758  当我们打开Chrome的网络面板,查阅它的任意一个请求,可以看到,请求中有一个General选项。除了第四个,前三个我们都很熟悉。今天我们就来介绍一下第四个到底是什么。ReferrerPolicys 是HTTP的一个请求头,通常结合着 R......
  • .NET Core AutoMapping 对象映射器转换
    先在NuGet程序包里下载这个文件然后新建一个类继承:ProfileusingAutoMapper;usingRBAC_Domain;usingRBAC_Domain.DTO;namespaceRBAC_Service.MyProFiles{///<summary>///转换对象映射器类///</summary>publicclassMappingProfile:Profile......