gpt4 book ai didi

rust - Box::new 中的结构是否需要大括号

转载 作者:行者123 更新时间:2023-12-05 09:26:40 24 4
gpt4 key购买 nike

Box::new() 中的空结构是否需要大括号?如果没有,是否有首选样式?

struct Empty;

// are these equivalent?

fn get_empty_box() -> Box<Empty> {
Box::new(Empty)
}

fn get_empty_box_alt() -> Box<Empty> {
Box::new(Empty {})
}

最佳答案

取决于它们是如何定义的。

如果它们被定义为 struct Foo {} 那么是。

如果它们被定义为struct Foo();,那么它们就需要圆括号或大括号,但带大括号的并不常见。

如果它们被定义为 struct Foo; 那么它们就不需要大括号(尽管它们可以接受)并且通常在没有大括号的情况下实例化。

技术原因是 struct Foo; 除了结构本身之外,还定义了一个包含结构实例的同名常量。即,const Foo: Foo = Foo {};。当您拼写 Foo 时不带大括号,您只需复制此常量。

以类似的方式,元组结构 (struct Foo();) 除了结构本身之外,还定义了一个实例化它的函数:fn Foo() -> Foo { Foo {} } .

关于rust - Box::new 中的结构是否需要大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73629319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com