Rust struct的JS样式静态属性
在javascript中,我们可以使用Rust struct的JS样式静态属性,rust,Rust,在javascript中,我们可以使用static关键字为类定义静态方法或属性。不能对类的实例调用静态方法或静态属性。相反,它们是在类本身上调用的。例如,我们可以计算我们创建的某个类的实例数: 职业玩家{ 静态播放计数=0; 构造函数(){ Player.playerCount++; } } 他们的铁锈是否与此大致相当?或者可能是允许类似内容的库/宏 struct Player{} impl播放器{ 静态播放计数; pub fn new()->Self{ 玩家计数++ //增量播放计数 } }
static
关键字为类定义静态方法或属性。不能对类的实例调用静态方法或静态属性。相反,它们是在类本身上调用的。例如,我们可以计算我们创建的某个类的实例数:
职业玩家{
静态播放计数=0;
构造函数(){
Player.playerCount++;
}
}
他们的铁锈是否与此大致相当?或者可能是允许类似内容的库/宏
struct Player{}
impl播放器{
静态播放计数;
pub fn new()->Self{
玩家计数++
//增量播放计数
}
}
结构中没有静态字段这样的东西。Rust的struct
s比面向对象语言中的类更接近它们的C名称
粗略的等价物可能是需要使用不安全的代码的。这是因为一个全局可访问、可变的值将成为未定义行为(如数据竞争)的来源,Rust希望所有代码都没有UB,除非您编写单词safe
对于您的用例,一个保存此状态并通过&mut
引用传递给new
函数的playermanger
结构可能是一个好主意
struct playermanger{
计数:使用,
}
impl PlayerManager{
pub fn add_player(&mut self){
self.count+=1;
}
}
//然后。。。
impl播放器{
发布fn新(管理者:&mut玩家管理者)->Self{
manager.add_player();
//待办事项:玩家结构的其余部分
}
}
Rust不支持structuresys中的静态字段,我想某种类型的Manager结构将是我的下一个选择。您是否有可能添加一些示例代码来说明您对PlayerManger
的描述?@ANimator120我添加了一个示例,但它相当简单(最初被忽略了,因为我认为这个答案不需要它)。