跳到主要内容

常用成员方法速查表

核心类型常用成员方法速查表

覆盖Rust日常开发95%以上的场景,重点突出组合器(Rust核心生产力工具)

1. 数值类型 (i32/u32/f64/...)

所有数值类型通用方法,特殊方法单独标注

方法签名适用场景示例
absfn abs(self) -> Self取绝对值(-5).abs() // 5
clampfn clamp(self, min: Self, max: Self) -> Self限制值在区间内15.clamp(0, 10) // 10
max/minfn max(self, other: Self) -> Self取两个值的最大/最小3.max(5) // 5
powfn pow(self, exp: u32) -> Self整数幂运算2.pow(3) // 8
sqrtfn sqrt(self) -> f64平方根(仅浮点数)4.0.sqrt() // 2.0
round/ceil/floorfn round(self) -> f64浮点数取整2.7.round() // 3.0
to_stringfn to_string(&self) -> String转换为字符串123.to_string() // "123"
parsefn parse<F: FromStr>(&self) -> Result<F, F::Err>字符串转数值"123".parse::<i32>().unwrap() // 123

2. 布尔类型 (bool)

方法签名适用场景示例
then_somefn then_some<T>(self, t: T) -> Option<T>条件转Optiontrue.then_some(5) // Some(5)
thenfn then<T, F: FnOnce() -> T>(self, f: F) -> Option<T>条件执行函数转Option`false.then(
notfn not(self) -> bool逻辑非(同!true.not() // false
and/orfn and(self, other: bool) -> bool逻辑与/或(短路)true.and(false) // false

3. 字符类型 (char)

方法签名适用场景示例
is_alphabeticfn is_alphabetic(self) -> bool是否为字母'a'.is_alphabetic() // true
is_numericfn is_numeric(self) -> bool是否为数字'5'.is_numeric() // true
is_whitespacefn is_whitespace(self) -> bool是否为空白字符' '.is_whitespace() // true
to_ascii_lowercasefn to_ascii_lowercase(self) -> charASCII转小写'A'.to_ascii_lowercase() // 'a'
to_digitfn to_digit(self, radix: u32) -> Option<u32>字符转指定进制数字'a'.to_digit(16) // Some(10)

4. 字符串切片 (&str)

Rust字符串核心,所有String都可通过as_str()转为&str

方法签名适用场景示例
lenfn len(&self) -> usize字节长度(非字符数)"中文".len() // 6
is_emptyfn is_empty(&self) -> bool是否为空"".is_empty() // true
containsfn contains(&self, pat: impl Pattern<'_>) -> bool是否包含子串"hello".contains("ell") // true
starts_with/ends_withfn starts_with(&self, pat: impl Pattern<'_>) -> bool是否以子串开头/结尾"hello".starts_with("he") // true
trimfn trim(&self) -> &str去除两端空白" hello ".trim() // "hello"
split_whitespacefn split_whitespace(&self) -> SplitWhitespace<'_>按任意空白分割"a b c".split_whitespace().collect::<Vec<_>>() // ["a","b","c"]
splitfn split(&self, pat: impl Pattern<'_>) -> Split<'_>按指定分隔符分割"a,b,c".split(',').collect::<Vec<_>>() // ["a","b","c"]
replacefn replace(&self, from: &str, to: &str) -> String替换所有子串"hello".replace("l", "x") // "hexxo"
parsefn parse<F: FromStr>(&self) -> Result<F, F::Err>字符串转其他类型"123".parse::<i32>().unwrap() // 123
charsfn chars(&self) -> Chars<'_>迭代Unicode字符"中文".chars().count() // 2

5. 字符串 (String)

可变字符串,拥有所有权

方法签名适用场景示例
newfn new() -> String创建空字符串let s = String::new();
with_capacityfn with_capacity(capacity: usize) -> String预分配容量(性能优化)let mut s = String::with_capacity(100);
push_strfn push_str(&mut self, string: &str)追加字符串切片let mut s = "hello".to_string(); s.push_str(" world");
pushfn push(&mut self, ch: char)追加单个字符s.push('!');
popfn pop(&mut self) -> Option<char>弹出最后一个字符s.pop() // Some('!')
clearfn clear(&mut self)清空字符串(保留容量)s.clear();
as_strfn as_str(&self) -> &str转为不可变切片let slice: &str = s.as_str();
into_bytesfn into_bytes(self) -> Vec<u8>转为字节向量(消耗所有权)"hello".into_bytes() // [104,101,108,108,111]

6. 选项类型 (Option<T>)

Rust空值安全核心,高频组合器,参考组合器详解

7. 结果类型 (Result<T, E>)

Rust错误处理核心,高频组合器,参考组合器详解


8. 向量 (Vec<T>)

Rust动态数组,最常用集合

方法签名适用场景示例
newfn new() -> Vec<T>创建空向量let v: Vec<i32> = Vec::new();
with_capacityfn with_capacity(capacity: usize) -> Vec<T>预分配容量(性能优化)let mut v = Vec::with_capacity(100);
pushfn push(&mut self, value: T)尾部追加元素v.push(5);
popfn pop(&mut self) -> Option<T>尾部弹出元素v.pop() // Some(5)
len/is_emptyfn len(&self) -> usize获取长度/判断是否为空v.len() // 0
get/get_mutfn get(&self, index: usize) -> Option<&T>安全索引访问(返回Option)v.get(0) // None
insertfn insert(&mut self, index: usize, element: T)指定位置插入元素v.insert(0, 5);
removefn remove(&mut self, index: usize) -> T删除指定位置元素(O(n))v.remove(0) // 5
extendfn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)追加迭代器所有元素v.extend([1,2,3]);
iter/iter_mut/into_iterfn iter(&self) -> Iter<'_, T>生成不可变/可变/所有权迭代器`v.iter().for_each(
sortfn sort(&mut self)排序(要求T: Ord)let mut v = [3,1,2].to_vec(); v.sort(); // [1,2,3]
containsfn contains(&self, x: &T) -> bool是否包含元素(要求T: PartialEq)v.contains(&2) // true
clearfn clear(&mut self)清空向量(保留容量)v.clear();

9. 切片 (&[T])

向量的不可变视图,所有Vec都可通过as_slice()转为&[T]

方法签名适用场景示例
len/is_emptyfn len(&self) -> usize获取长度/判断是否为空[1,2,3].len() // 3
get/get_mutfn get(&self, index: usize) -> Option<&T>安全索引访问[1,2,3].get(5) // None
split_atfn split_at(&self, mid: usize) -> (&[T], &[T])分割为两个切片[1,2,3,4].split_at(2) // ([1,2], [3,4])
chunksfn chunks(&self, chunk_size: usize) -> Chunks<'_, T>按固定大小分块迭代[1,2,3,4].chunks(2).collect::<Vec<_>>() // [[1,2], [3,4]]
windowsfn windows(&self, size: usize) -> Windows<'_, T>滑动窗口迭代[1,2,3].windows(2).collect::<Vec<_>>() // [[1,2], [2,3]]
sortfn sort(&mut self)排序(可变切片)let mut v = [3,1,2]; v.sort(); // [1,2,3]
containsfn contains(&self, x: &T) -> bool是否包含元素[1,2,3].contains(&2) // true

10. 迭代器 (Iterator)

Rust函数式编程核心,所有集合都可生成迭代器,参考组合器详解


11. 哈希映射 (HashMap<K, V>)

键值对集合,O(1)查找

方法签名适用场景示例
newfn new() -> HashMap<K, V>创建空哈希映射let mut map: HashMap<String, i32> = HashMap::new();
insertfn insert(&mut self, k: K, v: V) -> Option<V>插入键值对(返回旧值)map.insert("a".to_string(), 5) // None
get/get_mutfn get<Q: ?Sized>(&self, k: &Q) -> Option<&V>按键查找值map.get("a") // Some(&5)
removefn remove<Q: ?Sized>(&mut self, k: &Q) -> Option<V>删除键值对(返回旧值)map.remove("a") // Some(5)
contains_keyfn contains_key<Q: ?Sized>(&self, k: &Q) -> bool是否包含键map.contains_key("a") // false
entryfn entry(&mut self, key: K) -> Entry<'_, K, V>条目API(最常用)map.entry("a".to_string()).or_insert(0) += 1;
or_insert/or_insert_withfn or_insert(self, default: V) -> &'a mut V键不存在时插入默认值map.entry("b".to_string()).or_insert(10);
keys/valuesfn keys(&self) -> Keys<'_, K, V>迭代所有键/值`map.keys().for_each(
iter/iter_mut/into_iterfn iter(&self) -> Iter<'_, K, V>生成键值对迭代器`map.iter().for_each(

补充说明

  1. 所有权规则:方法名中带into_前缀的通常会消耗self所有权;带_mut后缀的会修改self;带as_前缀的会返回引用
  2. 组合器优先:Rust中优先使用map/and_then/filter等组合器,而非if let/match嵌套,代码更简洁易读
  3. 性能提示:创建集合时尽量使用with_capacity预分配容量,避免频繁扩容
  4. 安全优先:避免滥用unwrap,生产环境优先使用unwrap_or/unwrap_or_else?操作符