作者:AlbertWen
添加时间:2026-07-04 09:40:45
修改时间:2026-07-09 04:00:20
分类:
01.Rust编程
编辑
通过派生 trait 增加实用功能
如果能够在调试程序时打印出 Rectangle 实例来查看其所有字段的值就更好了。如下示例像前面章节那样尝试使用 println! 宏。但这并不行。
文件名: src/main.rs
struct Rectangle {
width: u32,
height: u32,
}
fn main() {
let rect1 = Rectangle {
width: 30,
height: 50,
};
println!("rect1 is {}", rect1);
}
当我们运行这个代码时,会出现带有如下核心信息的错误:
error[E0277]: `Rectangle` doesn't implement `std::fmt::Display`
作者:AlbertWen
添加时间:2026-07-04 01:25:23
修改时间:2026-07-08 12:09:00
分类:
01.Rust编程
编辑
字符串 slice
字符串 slice(string slice)是 String 中一部分值的引用,它看起来像这样:
fn main() {
let s = String::from("hello world");
let hello = &s[0..5];
let world = &s[6..11];
}
字符串字面量就是 slice —— 类型为 &str
还记得我们讲到过字符串字面量被储存在二进制文件中吗?现在知道 slice 了,我们就可以正确地理解字符串字面量了:
let s = "Hello, world!";
这里 s 的类型是 &str :它是一个指向二进制程序特定位置的 slice。这也就是为什么字符串字面量是不可变的;&str 是一个不可变引用。
详情查看:https://www.rustwiki.org.cn/zh-CN/book/ch04-03-slices.html
作者:AlbertWen
添加时间:2026-07-02 19:29:12
修改时间:2026-07-10 07:53:06
分类:
01.Rust编程
编辑
哪些类型实现了 Copy trait 呢?
任何一组简单 标量值(基础数据类型) 的组合都可以实现 Copy,任何不需要分配内存或某种形式资源的类型都可以实现 Copy 。如下是一些 Copy 的类型:
- 所有整数类型,比如
u32。
- 所有浮点数类型,比如
f64。
- 布尔类型,
bool,它的值是 true 和 false。
- 字符类型,
char。
- 元组,当且仅当其包含的类型也都实现
Copy 的时候。比如,(i32, i32) 实现了 Copy,但 (i32, String) 就没有。
详情查看:https://www.rustwiki.org.cn/zh-CN/book/ch04-01-what-is-ownership.html
作者:AlbertWen
添加时间:2026-07-02 10:18:16
修改时间:2026-07-08 04:33:33
分类:
01.Rust编程
编辑
作者:AlbertWen
添加时间:2026-07-02 09:57:36
修改时间:2026-07-10 23:50:59
分类:
01.Rust编程
编辑
基于 Salvo 的项目架构,我建议不要按“框架目录”来分,而是按 业务模块 + 分层架构 来组织。Salvo 本身的核心比较轻:Router 负责路由树,Handler 既可以做接口处理器,也可以做中间件;中间件通过 Router::hoop() 挂载,并会影响当前路由及其子路由。(Salvo)
作者:AlbertWen
添加时间:2026-06-07 22:34:02
修改时间:2026-07-05 17:20:55
分类:
01.Rust编程
编辑
我先按“它们分别处在网络栈的哪一层”来解释,这样最容易区分:rustls 负责 TLS 加密,hyper 负责 HTTP 协议,axum 负责 Web 应用路由与业务处理。
可以把它们理解成 Rust Web/网络服务开发里的三层东西:
浏览器 / 客户端
|
HTTPS / TLS 加密层 ← rustls
|
HTTP 协议层 ← hyper
|
Web 路由 / 业务层 ← axum
|
你的业务代码
作者:AlbertWen
添加时间:2025-09-07 19:38:12
修改时间:2026-07-11 22:25:00
分类:
01.Rust编程
编辑
核心答案是:遇到阻塞的 Future 确实需要线程来执行,但关键点在于它“让出”了它当前正在使用的那个线程的执行权,而不是一直“霸占”着线程直到阻塞结束。
作者:AlbertWen
添加时间:2025-09-07 15:50:31
修改时间:2026-07-10 17:36:19
分类:
01.Rust编程
编辑
Rust 异步运行时(Async Runtime)是一个在 Rust 程序主逻辑(main 函数)开始执行之前和之后,负责为其提供关键执行环境的代码库和一组服务。
它的核心任务是管理异步任务(如 async/.await)所需的复杂调度、上下文切换和事件驱动I/O。
作者:AlbertWen
添加时间:2025-09-01 11:51:37
修改时间:2026-07-07 19:30:55
分类:
01.Rust编程
编辑
Rust 也为系统编程世界带来了现代化的开发工具:
- Cargo 是内置的依赖管理器和构建工具,它能轻松增加、编译和管理依赖,并使依赖在 Rust 生态系统中保持一致。
- Rustfmt 格式化工具确保开发者遵循一致的代码风格
- rust-analyzer 为集成开发环境(IDE)提供了强大的代码补全和内联错误信息功能
作者:AlbertWen
添加时间:2025-08-11 15:59:45
修改时间:2026-07-10 22:18:20
分类:
01.Rust编程
编辑
- 不设置镜像加速rustup话,更新升级会非常慢!
- 使用 RsProxy.cn 的加速服务可以解决因网络原因导致的下载慢的问题!