gpt4 book ai didi

rust - Rust 常量表达式可以使用 Default 之类的特性吗?

转载 作者:行者123 更新时间:2023-12-03 11:25:21 24 4
gpt4 key购买 nike

这段代码给出了一个错误:

#[derive(Default)]
struct A {
b: Option<()>,
c: Option<()>,
}

const a: A = A {
b: None,
..Default::default()
};

error[E0015]: calls in constants are limited to constant functions, tuple structs and tuple variants
--> src/lib.rs:9:7
|
9 | ..Default::default()
| ^^^^^^^^^^^^^^^^^^

在这个小例子中,这不是一个大问题,但是如果我有一个由多个实现 Default 特性的结构组成的结构,那么无法使用它至少会带来不便。

虽然我可以写这个,但它没有 Default 提供的灵活性:

impl A {
const fn new(b: Option<()>) -> Self {
A { b, c: None }
}
}

const a: A = A::new(None);

有什么办法可以避免这样做吗?

最佳答案

不,不可能在恒定的上下文中使用特征。这仍在 RFC #2632 — Calling methods on generic parameters of const fns 中讨论。

也可以看看:

  • Can I use const with overloading operators in Rust?
  • 关于rust - Rust 常量表达式可以使用 Default 之类的特性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61891801/

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