4.4 常用 Rust 函数
函数是编程语言的核心构建模块之一,用于将逻辑分解为可重用的代码片段。Rust 提供了功能强大的函数定义和调用机制,以及内置了一些常用的函数来处理各种任务。本节将介绍 Rust 函数的基础知识、定义与调用方式,以及常见的内置函数。
4.4.1 函数的定义与调用
在 Rust 中,函数使用 fn 关键字定义,通常需要指定参数和返回值类型。
基本函数定义
1
2
3
4
5
6
7
|
fn main() {
greet(); // 调用函数
}
fn greet() {
println!("Hello, Rust!");
}
|
带参数的函数
函数可以接受一个或多个参数,参数的类型必须显式指定。
1
2
3
4
5
6
7
|
fn main() {
print_sum(3, 5);
}
fn print_sum(a: i32, b: i32) {
println!("Sum: {}", a + b);
}
|
带返回值的函数
使用 -> 指定返回值的类型。函数的最后一个表达式的值将被作为返回值。
1
2
3
4
5
6
7
8
|
fn main() {
let result = add(3, 5);
println!("Result: {}", result);
}
fn add(a: i32, b: i32) -> i32 {
a + b // 返回值,无需加分号
}
|
注意: 如果函数中包含 ;,则它不再是返回值,而是语句。
4.4.2 常用 Rust 内置函数
Rust 提供了一些常用的内置函数,简化了许多常见操作。
1. 格式化输出
println! 和 print! 是用于输出到标准控制台的宏函数。
println!:输出内容后换行。
print!:输出内容但不换行。
1
2
3
4
|
fn main() {
print!("This is ");
println!("Rust!");
}
|
2. 字符串处理
Rust 的字符串处理函数分为两类:
String 类型:可变。
&str 类型:不可变字符串切片。
常用方法:
to_string():将切片转换为 String。
push_str():向 String 添加字符串。
len():获取字符串长度。
1
2
3
4
5
6
7
|
fn main() {
let s = "Hello".to_string();
let mut s2 = s.clone();
s2.push_str(", Rust!");
println!("{}", s2);
println!("Length: {}", s2.len());
}
|
3. 数值类型方法
Rust 的数值类型(i32、f64 等)有许多内置方法:
abs():返回绝对值。
powi():整数次幂。
sqrt():平方根。
1
2
3
4
5
6
|
fn main() {
let x = -10;
let y = 4.0;
println!("Absolute: {}", x.abs());
println!("Power: {}", y.powi(2));
}
|
4. 集合类型操作
Rust 提供了丰富的集合类型(如 Vec、HashMap 等),常用函数包括:
push():向 Vec 添加元素。
len():获取集合长度。
get():访问集合中的元素。
1
2
3
4
5
6
7
|
fn main() {
let mut v = Vec::new();
v.push(1);
v.push(2);
println!("Length: {}", v.len());
println!("First Element: {:?}", v.get(0));
}
|
4.4.3 高阶函数与闭包
Rust 支持高阶函数(以函数作为参数或返回值)和闭包(匿名函数)。
高阶函数
1
2
3
4
5
6
7
8
9
10
11
12
|
fn apply(f: fn(i32) -> i32, x: i32) -> i32 {
f(x)
}
fn double(x: i32) -> i32 {
x * 2
}
fn main() {
let result = apply(double, 5);
println!("Result: {}", result);
}
|
闭包
闭包可以捕获其定义环境中的变量。
1
2
3
4
5
|
fn main() {
let factor = 2;
let double = |x: i32| x * factor; // 闭包捕获变量 factor
println!("Result: {}", double(5));
}
|
4.4.4 函数作为模块的一部分
Rust 提倡模块化编程,函数可以组织到模块中,以实现更清晰的代码结构。
1
2
3
4
5
6
7
8
9
|
mod utils {
pub fn greet(name: &str) {
println!("Hello, {}!", name);
}
}
fn main() {
utils::greet("Rustacean");
}
|
4.4.5 小结
函数是 Rust 编程的核心,帮助开发者组织和复用代码。本节详细介绍了函数的定义、参数与返回值,以及一些常用的内置函数。此外,Rust 的闭包和高阶函数为开发提供了强大的灵活性。在下一章中,我们将探索 Rust 的控制流结构,为实现更复杂的程序逻辑奠定基础。