Rust中的一个局部函数

a14dhokn  于 2023-01-26  发布在  其他
关注(0)|答案(2)|浏览(100)

在Rust中有什么方法可以创建一个可以被多次调用的local函数,在Python中我会这样做:

def method1():
  def inner_method1():
    print("Hello")

  inner_method1()
  inner_method1()
ohfgkhjo

ohfgkhjo1#

可以,您可以在函数中定义函数:

fn method1() {
    fn inner_method1() {
        println!("Hello");
    }

    inner_method1();
    inner_method1();
}

然而,内部函数不能访问外部作用域。它们只是普通函数,不能从函数外部访问。然而,你可以将变量作为参数传递给函数。要定义一个具有特定签名的函数,该函数仍然可以从外部作用域访问变量,你必须使用闭包。

fhg3lkii

fhg3lkii2#

这是一个老问题,但我从Jon Gjengset的优秀著作 * Rust for Rustaceans * 中找到了这个问题,其中提到了内部函数Rust的一个有趣的用例。也就是说,如果你有一个泛型函数,但它有非泛型的子组件,你可以编写一个内部函数来减少由单态化产生的机器码重复量。他给出了HashMap::insert的例子。其当然必须计算某个泛型类型K的散列,但是在某些实现下,遍历Map以找到插入点可能是非泛型的。
快乐编码!

相关问题