克服 Rust 中缺乏继承

Overcoming lack of inheritance in rust

我有一个第三方 class,我通常在 C++ 中扩展它以获得我自己的专用类型。 如何在 Rust 中做到这一点?我尝试这样做的原因是我当然可以使用合成来代替,但是这样做我不能轻易地从第 3 方类型调用方法。 它是如何在 Rust 中完成的? [编辑]

use some_3rd_crate;
struct MyStruct{third_type: some_3rd_crate::Type,}

如何将 some_3rd_crate::Type 的所有 public 方法放入我的类型范围内,以便我可以像这样使用它们:

let mt = MyStruct{third_type: some_3rd_crate::Type()};
mt.call_3rd_party_function();

您可以为您的类型实施 AsRef or AsMut

impl AsRef<some_3rd_crate::Type> for MyStruct
{
    fn as_ref(&self) -> &some_3rd_crate::Type {
        &self.third_type
    }
}

然后可以用作:

let mt = MyStruct{third_type: some_3rd_crate::Type()};
mt.as_ref().call_3rd_party_function();