Rust Tracing日志

介绍 严格来说,tracing 并不是一个日志库,而是一个分布式跟踪的 SDK,用于采集监控数据的。 随着微服务的流行,现在一个产品有多个系统组成是非常常见的,这种情况下,一条用户请求可能会横跨几个甚至几十个服务。此时再用传统的日志方式去跟踪这条用户请求就变得较为困难,这就是分布式追踪在现代化监控系统中这么炽手可热的原因。 ...

2024-07-17 17:19 · 8 min · 3567 words · Reid

Rust Leetcode链表实现

Rust LinkedList 定义 Leetcode: rust 如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // Definition for singly-linked list. #[derive(PartialEq, Eq, Clone, Debug)] pub struct ListNode { pub val: i32, pub next: Option<Box<ListNode>>, } impl ListNode { #[inline] fn new(val: i32) -> Self { ListNode { next: None, val } } } /// 单链表 #[derive(Debug)] struct LinkedList<T> { head: Option<Box<Node<T>>>, } Go 如下: ...

2024-02-01 14:00 · 7 min · 3111 words · Reid

Rust生命周期常见误区

介绍 我曾经有过的所有这些对生命周期的误解,现在有很多初学者也深陷于此。 我用到的术语可能不是标准的,所以下面列了一个表格来解释它们的用意。 短语 意为 T 包含了所有可能类型的集合 或 这个集合中的类型 所有权类型 不含引用的类型, 例如 i32, String, Vec, 等 借用类型 或 引用类型 不考虑可变性的引用类型, 例如 &i32, &mut i32 等 可变引用 或 独占引用 独占的可变引用, 即 &mut T 不可变引用 或 共享引用 共享的不可变引用, 即 &T 误解项 简而言之:变量的生命周期指的是这个变量所指的数据可以被编译器静态验证的、在当前内存地址有效期的长度。 ...

2023-09-05 17:35 · 23 min · 11138 words · Reid

WebAssembly(Wasm) 教程

WebAssembly 简介 WebAssembly (有时缩写为 Wasm)为可执行程序定义了一种可移植的二进制代码格式和相应的文本格式以及软件接口,用于促进这些程序与其宿主环境之间的交互。 WebAssembly 的主要目标是在网页上启用高性能的应用程序,“但是它不会做出任何特定于 Web 的假设或提供特定于 Web 的特性,因此它也可以在其他环境中使用。”它是一个开放标准 ,旨在支持任何操作系统上的任何语言,实际上,所有最流行的语言都至少有一定程度的支持。 from wasm ...

2023-08-15 19:34 · 3 min · 1486 words · Reid