跳转到内容

固有方法

固有方法是直接声明在某个脚本类型上的方法。它们按 receiver 分发;当 receiver 类型已知时,会编译到稳定的方法元数据。

使用 impl Type { ... } 给脚本 struct 或 enum 添加方法。第一个参数通常写作 self,表示被调用的值。

struct Player {
level: i64
}
impl Player {
fn bonus(self, amount: i64) -> i64 {
return self.level + amount
}
}

方法调用语法是 receiver.method(args...)。如果编译器知道 receiver 类型,会链接到已解析方法;如果 receiver 是动态的,运行时方法分发会根据实际值解析目标。

fn main(player: Player) -> i64 {
return player.bonus(5)
}

同一个类型不能定义多个同名 receiver 方法。参数提示、默认值和参数数量不会形成重载集。

注册宿主类型也可以暴露方法,但这些调用会通过 HostAccess 和注册宿主元数据执行。脚本方法不会向脚本暴露 Rust &mut T