我试过了一些奇怪的技巧,as 关键字,Any 的trait,以及其他发法...
请问可以直接或间接让&dyn AB 物件
放入func2 吗,这功能应该很重要才对吧。
失去这种写法写面向对向,特别是运用设计模式应该很困难八。
fn main() {
struct S{}
impl A for S{}
impl B for S{}
impl AB for S{}
trait A{}
trait B{}
trait AB:B+A{}
fn func1(a:&dyn AB){
println!("Object B");
//Error func2(a);
}
fn func2(a:&dyn B){
println!("Object B")
}
println!("...");
}
Ext Link: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=16265df0dc41876c085fd18c527c7632
1
共 13 条评论, 1 页
评论区
写评论感謝 johnmave126 😀😀。
--
👇
johnmave126: 因为rust提倡compose而不是inherit,不过目前fat pointer不支持multiple trait object也确实是个问题。
因为rust提倡compose而不是inherit,不过目前fat pointer不支持multiple trait object也确实是个问题。
--
👇
swdcgghxa: 不过,更不解的是这种做法在其他程式语言明明是这么常见,可是怎么看起来我用的功能好像很冷门。 难道Rust通常用不着,还是最佳做法不这么用?,阿阿~~想不透该不该...
不过,更不解的是这种做法在其他程式语言明明是这么常见,可是怎么看起来我用的功能好像很冷门。 难道Rust通常用不着,还是最佳做法不这么用?,阿阿~~想不透该不该...
这个库怎么实现的太神了,不知道效率会不会降低...?。
我已经试写了一段代码效果还不错。
--
👇
johnmave126 这种的? << 😃是阿
https://crates.io/crates/cast_trait_object/0.1.1
这种的?
--
👇
swdcgghxa: 各位大神们,还有其他方法吗?
各位大神们,还有其他方法吗?
请问如何写这unsafe呢?感恩~~
--
👇
peacess: 可以使用unsafe代码,不需要nightly
可以使用unsafe代码,不需要nightly
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=5e66ded709c150d76d13187554a2a076
这个我知道只是希望可以动态分发
--
👇
苦瓜小仔: ```RUST #![allow(dead_code)]
fn main() {
}
我该怎么加呢?有不使用nightly方法吗?
--
👇
Cupnfish: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=16265df0dc41876c085fd18c527c7632
试试这个?不过需要nightly开不稳定的feature
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=16265df0dc41876c085fd18c527c7632
试试这个?不过需要nightly开不稳定的feature