内容简介:在实际的工程中,Rust既不能避免一个运行结果:通常,完全限定语法定义为:
在实际的工程中,Rust既不能避免一个 trait
与另一个 trait
拥有相同名称的方法,也不能阻止为同一类型同时实现这两个 trait
。甚至可以直接在类型上实现开始已经有的同名方法!当然,当调用这些同名方法时,你必须要告诉Rust我们使用哪一个。下面示例代码说明了具体用法:
pub trait Airplane { fn speed(&self){ println!("airplane default speed=800"); } fn state(){ println!("fly state"); } } pub trait Boat { fn speed(&self); fn state(){ println!("boat state"); } } struct Airboat; impl Airboat{ fn speed(&self) { println!("airboat speed 0~800"); } fn state(){ println!("airboat state"); } } impl Airplane for Airboat { fn speed(&self){ println!("airboat in airplane state speed=800"); } } impl Boat for Airboat { fn speed(&self){ println!("airboat in boat state speed=60"); } } fn main() { let a = Airboat; Airboat::state(); a.speed(); //默认调用自身的实现 <Airboat as Airplane>::state(); //完全限定语法 Airplane::speed(&a); //显示语法指定调用Airplane方法 <Airboat as Airplane>::speed(&a); <Airboat as Boat>::state(); Boat::speed(&a); }
运行结果:
airboat state airboat speed 0~800 fly state airboat in airplane state speed=800 airboat in airplane state speed=800 boat state airboat in boat state speed=60
通常,完全限定语法定义为: <Type as Trait>::function(receiver_if_method, next_arg, ...)
在存在调用相同名称方法时,重要的是告诉编译器你调用的是具体那个方法,上面的示例代码给出了调用相同名称时的调用方法。其实其他语言也有类似的问题(例如C++),解决方法都差不多。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Rust完全限定语法与消歧义:调用相同名称的方法
- 在 Android 和 Hilt 中限定作用域
- 在 Android 和 Hilt 中限定作用域
- 木兰语言 0.0.17.2 实现简易网页浏览器,又一次碰到语法歧义
- 复旦大学提出中文分词新方法,Transformer连有歧义的分词也能学
- 倪凯:市场回归理性,限定场景自动驾驶未来五年迎来爆发期 | 自动驾驶这十年
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Approximation Algorithms
Vijay V. Vazirani / Springer / 2001-07-02 / USD 54.95
'This book covers the dominant theoretical approaches to the approximate solution of hard combinatorial optimization and enumeration problems. It contains elegant combinatorial theory, useful and inte......一起来看看 《Approximation Algorithms》 这本书的介绍吧!