- 博客(13)
- 收藏
- 关注
原创 Rust-ThisError
2、Anyhow将所有错误类型归结为Anyhow的错误类型,使得错误的传播和报告变的方便,但失去了错误的特异性;而thiserror定义了清晰的错误结构类型,每个错误变体代表一种具体的出错误条件;而thiserror更适合于库级别的错误处理,定义了清晰的错误结构,这对于库的使用者至关重要;3、Anyhow对错误类型的封装导致无法对具体的错误类型进行处理;Anyhow是应用在应用层错误处理,它擦出了错误的具体信息,将错误进行从抽象,而thiserror经常用户包库层,非常适合定义层次清晰、明确的错误。
2025-09-08 23:01:21
219
原创 Rust-错误处理Anyhow
在rust中错误处理往往会显得冗长,特别是在多种错误类型和复杂控制流程时。Anyhow crate提供了应用级的错误处理,能够进行灵活的错误处理,与库中常用的强类型错误枚举不同,Anyhow允许你返回单一的动态错误类型,具有包装和传播错误的能力,几乎可以处理任何实现了标准错误特性的错误。以上代码中可能会返回两种不同类型的错误,那么我们需要进行处理,将这两种错误类型变为一种类型,这样rust才不会报错(因为rust要求必须返回同一种错误类型)。
2025-09-04 23:31:31
297
原创 Rust-Result<Option<T>,E>与Option<Result<T,E>>
Result<Option<T>,E>与Option<Result<T,E>>使得Result和Option的使用范围更加广泛和灵活。
2025-09-01 22:33:44
177
原创 Rust-?操作符链式调用
可以看到链式调用的前提是同一个变量的不同方法的调用链,每个方法返回了变量自身,并且要注意不可变引用和可变引用不能链接在一起调用。以下代码简单演示了一个订单的验证、支付、邮寄的流程,展示链式调用的使用方法。链式调用可以减少代码量,使代码变得更加简介易懂。
2025-08-31 20:59:06
157
原创 Rust-?操作符在一个函数内返回不同错误类型时遇到的问题以及处理方式
操作符使得代码更加简介,但是在同一个函数内同时使用多个?这段代码无法运行,因为在fn c_to_h(cense_id:u32) -> Result<f32, String>函数的签名中返回的结果是Result<f32, String>类型,但是该函数中的两个?操作符却返回两种不同的类型,分别为Result<f32, u32>、Result<f32, String>。现在有两种方法来处理这个问题:map_err和修改返回类型。
2025-08-31 18:11:15
202
原创 Rust ?操作符
还有一种更短的方法来处理Result(和Option),比match更短,甚至比if let更短。它被称为“问号操作符”,仅仅用一个?。在返回结果的函数之后,您可以添加?,这将导致:1、如果结果为Ok,则返回结果中的内容2、如果是Err,则返回错误我们将再次使用parse()。我们将编写一个名为parse_str的函数,它尝试将a由&str转换为i32。这个函数接受一个&str类型。如果它是Ok,它返回一个用Ok包裹起来的i32。如果它是一个Err,它返回一个ParseIntError。
2025-08-31 15:54:40
1003
原创 Rust-集合collections
你可以在.remove()的描述中看到:移除并返回vector中位置index处的元素,将其之后的所有元素向左移动。我们将从HashMap开始,这是非常常见的。有了它,您可以尝试创建条目并使用另一种方法,例如,or_insert()在没有键的情况下插入值。有趣的是,它还提供了一个可变引用,所以如果你愿意,你可以改变它。如果它存在,它将是Some(value),如果不存在,你将得到None,而不是使程序崩溃。HashMap不是按顺序的,所以如果你一起打印HashMap中的每个键,它可能会以不同的方式打印。
2025-08-24 20:46:01
1018
原创 Rust-循环loops
有了循环,你可以告诉Rust继续做某件事,直到你想让它停止。你使用loop来启动一个循环,它不会停止,除非你告诉它何时停止。因此,让我们告诉编译器它什么时候可以中断。如果循环中又有一个循环,你可以给它们命名。通过名称,您可以告诉Rust要跳出哪个循环。
2025-08-18 20:55:50
349
原创 Rust-枚举 Enums
枚举enum是枚举(enumerations)的缩写。它们看起来与结构体非常相似,但又有所不同。所以结构体可以同时处理很多事情,而枚举可以同时处理很多选择。要声明枚举,请编写enum并使用带有选项的代码块,代码块之间用逗号分隔。就像结构体一样,最后一部分可以有逗号也可以没有。这是一个枚举,因为你要么看到太阳,要么看到星星:你必须选择一个。Sun/Stars被称为变体。您也可以向枚举中添加数据。您还可以“导入”枚举,这样您就不必输入那么多。从1到10,我的幸福指数是7。让我们导入,这样可以减少输入。
2025-08-17 15:49:40
321
原创 Rust-范围表达式
6..=18 是一个闭区间范围表达式,表示从 6 到 18 的所有整数,包括 6 和 18。它在循环、切片、模式匹配和集合操作中非常有用,可以帮助你更简洁地处理一系列值。
2025-08-17 14:40:24
292
原创 为influxDB3配置Grafana
在解压后的文件中找到grafana-server.exe,并运行。如果你的3000端口被占用了,你需要修改默认运行的端口号。将端口号改为其他端口号(其他端口号可能不需要特殊的授权)。”,因为在配置文件中英文的引号为注释符号。在官网下载并解压Grafana的安装包。初始用户名和密码都为admin。打开conf文件夹,找到。3、登录到Grafana。1、下载Grafana。2、运行Grafana。
2025-07-07 22:53:32
448
原创 为influxDB3配置Telegraf
第二步:使用以下命令将下载好的Telegraf的目录中的telegraf.exe、telegraf.conf移动到D:\InfluxData\telegraf目录下。第一步:以管理员份运行PowerShell,并运行如下命令,下载Telegraf到指定路径(D:\InfluxData\telegraf\)。3、运行如下命令,把Telegraf 和 configuration注册为Windows service。注意:将YOUR_TOKEN替换为你自己的token。token = "你自己的token"
2025-07-07 20:58:28
388
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅