相关疑难解决方法(0)

是否应该在struct和impl中复制特征边界?

以下代码使用具有泛型类型的结构.虽然它的实现仅对给定的特征边界有效,但可以使用或不使用相同的边界来定义结构.struct的字段是私有的,因此无论如何其他代码都无法创建实例.

trait Trait {
    fn foo(&self);
}

struct Object<T: Trait> {
    value: T,
}

impl<T: Trait> Object<T> {
    fn bar(object: Object<T>) {
        object.value.foo();
    }
}
Run Code Online (Sandbox Code Playgroud)

是否应该忽略对结构有约束力的特性以符合DRY原则,还是应该给予澄清依赖性?或者是否存在一种解决方案应优先于另一种解决方案?

rust

13
推荐指数
3
解决办法
725
查看次数

是否可以在 Rust 的结构中创建类型别名?

我正在使用一些通用结构,如下所示:

pub struct Example<A, B, C, D, E, F> {
    inner: OtherExample<A, B, C, D, E, F>
    ...
}
Run Code Online (Sandbox Code Playgroud)

在该结构的整个实现方法中,我必须不断引用这一巨大的类型集,如下所示:

impl<A, B, C, D, E, F> Example<A, B, C, D, E, F> {
    pub fn get_inner(&self) -> &OtherExample<A, B, C, D, E, F> { 
        &self.inner
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以缩短所有这些通用类型的符号。为了便于阅读,我不能像上面的示例中那样只使用单个字母,所以我真的想在结构中创建一个泛型类型别名,如下所示:

pub struct Example<AliasedGenerics = <A, B, C, D, E, F>> {
    inner: OtherExample<AliasedGenerics>
    ...
}

impl<AliasedGenerics = <A, B, C, D, E, F>> Example<AliasedGenerics> {
    pub fn get_inner(&self) -> &OtherExample<AliasedGenerics> { …
Run Code Online (Sandbox Code Playgroud)

rust

7
推荐指数
1
解决办法
3466
查看次数

标签 统计

rust ×2