随笔分类 -  【10】rust

摘要:match #[derive(Debug, Clone)] struct User { name: String, is_admin: bool, active: bool, } #[derive(Debug)] struct Request { action: String, require_ad 阅读全文
posted @ 2025-07-08 16:21 苏格拉底的落泪 阅读(8) 评论(0) 推荐(0)
摘要:枚举 Option<T> 概览 enum Option<T> { Some(T), None, } Some(T):表示有值。 None:表示无值(空值、未定义、找不到等)。 fn find_even(numbers: &[i32]) -> Option<i32> { for &n in numbe 阅读全文
posted @ 2025-07-05 17:38 苏格拉底的落泪 阅读(5) 评论(0) 推荐(0)
摘要:trait trait 可以类比其他语言中的 接口(interface) 或 抽象类。它定义了一组方法签名,但不实现具体逻辑,具体逻辑由实现该 trait 的类型提供。 trait TraitName { fn method(&self); } 然后用 impl 为类型实现这个 trait: str 阅读全文
posted @ 2025-07-05 16:36 苏格拉底的落泪 阅读(12) 评论(0) 推荐(0)
摘要:生命周期 当函数签名中没有显式生命周期参数时,Rust 会根据以下三条规则自动推断: 1. 每个引用参数都有自己的生命周期参数。 例如,函数有两个引用参数,Rust 会假设它们有不同的生命周期: fn foo(x: &i32, y: &i32) -> i32 { ... } // 自动推断为: fn 阅读全文
posted @ 2025-07-05 14:40 苏格拉底的落泪 阅读(21) 评论(0) 推荐(0)
摘要:数组 1. 显示初始化 let a: [i32; 3] = [1, 2, 3]; // 类型:[i32; 3] [i32; 3] 表示:长度为 3 的 i32 数组。 元素数量固定,不能动态改变。 2. 使用重复值初始化 let b = [0; 5]; // 等价于 [0, 0, 0, 0, 0] 阅读全文
posted @ 2025-07-05 14:06 苏格拉底的落泪 阅读(19) 评论(0) 推荐(0)
摘要:元组结构体 // 普通结构体,字段有名字 struct Person { name: String, age: u32, } // 元组结构体,字段按位置访问 struct Color(u8, u8, u8); // 元组结构体(单字段),用于封装某个类型 struct Wrapper(Vec<i3 阅读全文
posted @ 2025-07-04 16:32 苏格拉底的落泪 阅读(17) 评论(0) 推荐(0)
摘要:结构体 为什么会有多个 impl Engine? 组织代码:把一部分方法放一个 impl,另一部分放另一个 impl,比如基础方法和扩展方法分开写。 实现不同 trait:通常用 impl Engine 实现类型自身的方法,再用 impl Trait for Engine 实现某个 trait。 分 阅读全文
posted @ 2025-07-04 14:51 苏格拉底的落泪 阅读(6) 评论(0) 推荐(0)
摘要:pub mod user { // 结构体是 pub 的 pub struct User { name: String, // 字段默认是私有的 } impl User { pub fn new(name: &str) -> Self { User { name: name.to_string(), 阅读全文
posted @ 2025-07-04 14:49 苏格拉底的落泪 阅读(11) 评论(0) 推荐(0)
摘要:Box use std::ptr; struct MyStruct { value: i32, } impl MyStruct { fn new(val: i32) -> Self { Self { value: val } } fn print(&self) { println!("MyStruc 阅读全文
posted @ 2025-07-04 14:20 苏格拉底的落泪 阅读(7) 评论(0) 推荐(0)