我希望能够定义一个特征,使得任何实现该特征的结构不仅必须实现函数,而且还必须指定某些常量的值。所以也许是这样的:
trait MyTrait {
const MY_CONST: u8;
fn foo();
fn bar();
}
Run Code Online (Sandbox Code Playgroud)
然后结构看起来像这样:
struct MyFirstStruct {
const MY_CONST: u8 = 42;
...
}
impl MyTrait for MyFirstStruct {
fn foo() {...}
fn bar() {...}
}
Run Code Online (Sandbox Code Playgroud)
这样,当我稍后实现 时MySecondStruct
,MyThirdStruct
它们可以分别具有不同的值MY_CONST
,但每个实例都MyFirstStruct
将具有相同的值MY_CONST
,并且每个实例MySecondStruct
也将具有相同的值MY_CONST
(这可能与 的值不同,也可能不不同)MY_CONST
为了MyFirstStruct
)
这可能吗?
我已经尝试了在块中指定常量的各种组合impl MyTrait for MyFirstStruct
,在块中指定它struct MyFirstTrait
,但似乎无法弄清楚。
在线搜索似乎总是落在 rust book (它没有描述这样的东西)、rust by example、高级特征 rust book Chapter或这个关于特征的网页上,其中有一个关于特征常量的令人沮丧的小部分,这似乎暗示这是可能的,也许。
我考虑过使用函数定义,例如getMY_CONST()
将其实现为仅 return MY_CONST
,但这似乎是一个丑陋的黑客,如果可能的话我宁愿避免。
如果这是不可能的,那么可以使用其他方法来完成这项工作,我仍然在开始 Rust 冒险:)。
Sve*_*ach 16
特征可以具有关联的常量,并且特征定义中的语法与您所猜测的完全一样。不过,为特定特征设置值是特征实现的一部分,而不是结构定义的一部分。
trait MyTrait {
const MY_CONST: u8;
fn foo();
fn bar();
}
struct MyFirstStruct;
impl MyTrait for MyFirstStruct {
const MY_CONST: u8 = 42;
fn foo() {}
fn bar() {}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7684 次 |
最近记录: |