我有一个第三方类,我通常在c++中扩展它来获得我自己的专用类型。如何在Rust中做到这一点?原因我想做,我当然可以使用组合而不是但这样我无法轻易调用第三方的类型的方法。在Rust中是如何实现的?[编辑]
use some_3rd_crate;
struct MyStruct{third_type: some_3rd_crate::Type,}
如何将some_3rd_crate::Type的所有公共方法纳入我的类型范围,以便我可以使用它们:
let mt = MyStruct{third_type: some_3rd_crate::Type()};
mt.call_3rd_party_function();
可以为您的类型实现AsRef
或AsMut
:
impl AsRef<some_3rd_crate::Type> for MyStruct
{
fn as_ref(&self) -> &some_3rd_crate::Type {
&self.third_type
}
}
Then可用作:
let mt = MyStruct{third_type: some_3rd_crate::Type()};
mt.as_ref().call_3rd_party_function();