基本上,我只想要“快捷方式”:
impl Foo {
const c : i32 = 42;
type V = i32;
fn bar() -> V { c }
}
但是编译器提示:
error: associated constants are experimental (see issue #29646)
最佳答案
如错误消息中所述,相关常量 (const c: i32 = 42
) 是实验性的。
这意味着,除非您切换到夜间编译器并启用该功能,否则您不能将常量嵌套在实现或特征中。
但是,您可以在模块范围内拥有常量:
const C: i32 = 42;
如果修复此问题,您将遇到下一个错误:关联类型只允许在 traits 及其实现中使用,而不是在“固有”实现中使用。
再一次,解决方法是在模块范围内提取类型别名:
type V = i32;
编译以下代码:
const C: i32 = 42;
type V = i32;
struct Foo;
impl Foo {
fn bar() -> V { C }
}
并且 C
和 V
是私有(private)的(只能在模块内访问)它们不会泄漏。
关于rust - 如何在 Rust 中定义关联的 const 或类型别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41588182/