四条连续垂直线是什么意思?

Lio*_* Li 6 syntax rust

在以下代码段中:

let read_pool = ReadPool::new(
    "readpool",
    &Config::default_for_test(),
    || || Context {}
);
Run Code Online (Sandbox Code Playgroud)

四条垂直线是|| ||什么?

Fau*_*aux 10

|| 代表一个不带参数的lambda.

fn main() {
    let a = || println!("hello");
    let b = || { println!("world") };

    a(); // hello
    b(); // world
}
Run Code Online (Sandbox Code Playgroud)

两个一起是lambda返回另一个lambda:

fn main() {
    let a = || || println!("hello world");

    let c = a();
    c(); // hello world
}
Run Code Online (Sandbox Code Playgroud)

  • 最后我找到了答案。`||` 对于 lambda 来说有点奇怪 (2认同)

Mat*_* M. 7

在 Rust 中,||引入了 lambda(一个未命名的函数)。

lambda 的参数在两者之间指定:

  • |a, b| a + b:一个 lambda 接受 2 个参数ab返回它们的总和,
  • || println!("Hello, World"):一个不带参数的 lambda 并打印“Hello, World!”。

由于 lambda 的主体只是一个表达式,因此它可以是另一个 lambda:

  • || || println!("Hello, World"):一个不带参数的 lambda 并返回一个不带参数的 lambda 并打印“Hello, World!”。

因此,|| || Context {}简单来说就是:

  • 一个 lambda 不带参数并返回|| Context {},
  • 这是一个不带参数并返回 的实例的 lambda Context