自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 influxDB3安装

influxDB3的安装说明

2025-06-21 15:13:14 822

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除