Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust struct的JS样式静态属性_Rust - Fatal编程技术网

Rust struct的JS样式静态属性

Rust struct的JS样式静态属性,rust,Rust,在javascript中,我们可以使用static关键字为类定义静态方法或属性。不能对类的实例调用静态方法或静态属性。相反,它们是在类本身上调用的。例如,我们可以计算我们创建的某个类的实例数: 职业玩家{ 静态播放计数=0; 构造函数(){ Player.playerCount++; } } 他们的铁锈是否与此大致相当?或者可能是允许类似内容的库/宏 struct Player{} impl播放器{ 静态播放计数; pub fn new()->Self{ 玩家计数++ //增量播放计数 } }

在javascript中,我们可以使用
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我添加了一个示例,但它相当简单(最初被忽略了,因为我认为这个答案不需要它)。