Rust/Bevy代码中timer.0和name.0的.0语法作用是什么?
语法说明
这是Rust原生的元组结构体访问语法,和Bevy框架本身无关。
- 元组结构体是Rust中特殊的结构体类型,它没有命名字段,只有按顺序排列的字段类型,定义格式为
struct 结构体名(类型1, 类型2, ...);,访问这类结构体的字段时,直接用.序号的格式,序号从0开始计数,对应字段的定义顺序。
针对代码中的两个用法解释:
timer.0
代码第一行定义了struct GreetTimer(Timer);,这是仅包含一个Timer类型字段的元组结构体。函数中拿到的timer是Bevy的ResMut<GreetTimer>智能指针,解引用后得到GreetTimer实例,.0就是取出该实例内部存储的唯一Timer对象,之后才能调用Timer类型的tick方法。name.0
Bevy内置的Name类型本身就是单字段元组结构体,它的内部封装了表示实体名称的字符串值。.0就是取出Name实例内部存储的字符串内容,用于后续的打印输出。
补充:Bevy中大量使用单字段元组结构体做wrapper封装,目的是实现类型安全隔离,避免底层类型相同但语义不同的值被误用,访问内部值统一使用
.0即可。
内容的提问来源于stack exchange,提问作者BWStearns
相关产品推荐
相关产品推荐

