rust 两个一竖是什么意思?

https://github.com/actix/exam...

图片.png

没有在其他语言见过这两个东西

有什么文档可以提供参考的吗?


还有一个子问题: | 这个符号的中文名是什么?
阅读 2.7k
2 个回答

理解闭包, 可以复习一下高阶函数, 高阶函数的特点:

  • 参数可以是另一个函数
  • 返回值可以是另一个函数

闭包: 也称为 匿名函数, Lambda表达式

例子:

fn main() {
    /////////////////
    // 无参数闭包
    /////////////////
    let a = || 42;
    // 它不是一个变量, 使用其值的时候需要加`()`作为函数调用
    println!("a = {}", a());

    /////////////////
    // 单参数闭包
    // - 带一个参数, 返回类型没有定义, 编译器依据返回值进行类型推导
    // - 只有一个表达式, 可省略 {}
    /////////////////
    let b = |x| x + 1; 
    let d = |x| x + 1_i32;
    println!("a = {}", b(1));
    println!("a = {}", d(1));

    // `||` 实际上等价于函数的(), 为不带参形式
    // `->` 后是闭包的返回类型
    // `{}` 为闭包体, 定义闭包(匿名函数)要执行的代码, 如果其中只有一条语句或表达式 {} 可以省略

    /////////////////
    // 多参数闭包
    // - 有返回类型定义
    // - 明确定义函数体
    // - 因为定义了返回类型, 为了满足语法要求, 需要使用{}明确定义函数体
    /////////////////
    let c = |a: i32, b: i32| -> i32 { a + b };
    println!("c = {}", c(1, 2));
}

Clippy 类型提示

image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进