《Rust编程入门》4.4 常用Rust函数

4.4 常用 Rust 函数 函数是编程语言的核心构建模块之一,用于将逻辑分解为可重用的代码片段。Rust 提供了功能强大的函数定义和调用机制,以及内置了一些常用的函数来处理各种任务。本节将介绍 Rust 函数的基础知识、定义与调用方式,以及常见的内置函数。

4.4 常用 Rust 函数

函数是编程语言的核心构建模块之一,用于将逻辑分解为可重用的代码片段。Rust 提供了功能强大的函数定义和调用机制,以及内置了一些常用的函数来处理各种任务。本节将介绍 Rust 函数的基础知识、定义与调用方式,以及常见的内置函数。


4.4.1 函数的定义与调用

在 Rust 中,函数使用 fn 关键字定义,通常需要指定参数和返回值类型。

基本函数定义

fn main() {
    greet(); // 调用函数
}

fn greet() {
    println!("Hello, Rust!");
}

带参数的函数

函数可以接受一个或多个参数,参数的类型必须显式指定。

fn main() {
    print_sum(3, 5);
}

fn print_sum(a: i32, b: i32) {
    println!("Sum: {}", a + b);
}

带返回值的函数

使用 -> 指定返回值的类型。函数的最后一个表达式的值将被作为返回值。

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!:输出内容但不换行。
fn main() {
    print!("This is ");
    println!("Rust!");
}

2. 字符串处理

Rust 的字符串处理函数分为两类:

  • String 类型:可变。
  • &str 类型:不可变字符串切片。

常用方法:

  • to_string():将切片转换为 String
  • push_str():向 String 添加字符串。
  • len():获取字符串长度。
fn main() {
    let s = "Hello".to_string();
    let mut s2 = s.clone();
    s2.push_str(", Rust!");
    println!("{}", s2);
    println!("Length: {}", s2.len());
}

3. 数值类型方法

Rust 的数值类型(i32f64 等)有许多内置方法:

  • abs():返回绝对值。
  • powi():整数次幂。
  • sqrt():平方根。
fn main() {
    let x = -10;
    let y = 4.0;
    println!("Absolute: {}", x.abs());
    println!("Power: {}", y.powi(2));
}

4. 集合类型操作

Rust 提供了丰富的集合类型(如 VecHashMap 等),常用函数包括:

  • push():向 Vec 添加元素。
  • len():获取集合长度。
  • get():访问集合中的元素。
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 支持高阶函数(以函数作为参数或返回值)和闭包(匿名函数)。

高阶函数

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);
}

闭包

闭包可以捕获其定义环境中的变量。

fn main() {
    let factor = 2;
    let double = |x: i32| x * factor; // 闭包捕获变量 factor
    println!("Result: {}", double(5));
}

4.4.4 函数作为模块的一部分

Rust 提倡模块化编程,函数可以组织到模块中,以实现更清晰的代码结构。

mod utils {
    pub fn greet(name: &str) {
        println!("Hello, {}!", name);
    }
}

fn main() {
    utils::greet("Rustacean");
}

4.4.5 小结

函数是 Rust 编程的核心,帮助开发者组织和复用代码。本节详细介绍了函数的定义、参数与返回值,以及一些常用的内置函数。此外,Rust 的闭包和高阶函数为开发提供了强大的灵活性。在下一章中,我们将探索 Rust 的控制流结构,为实现更复杂的程序逻辑奠定基础。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页