相关疑难解决方法(0)

如何组成生锈功能?

我正在尝试编写一个组成两个函数的函数,初始设计非常简单,它是一个函数,它接受两个函数并返回一个组合函数,然后我可以用其他函数组合,(因为rust没有rest参数).但是我遇到了一个很长的硬墙,内置了令人沮丧的无用的编译器错误.

我的撰写功能:

fn compose<'a, A, B, C, G, F>(f: F, g: G) -> Box<Fn(A) -> C + 'a>
where
    F: 'a + Fn(A) -> B + Sized,
    G: 'a + Fn(B) -> C + Sized,
{
    Box::new(move |x| g(f(x)))
}
Run Code Online (Sandbox Code Playgroud)

我想怎么用它:

fn main() {
    let addAndMultiply = compose(|x| x * 2, |x| x + 2);
    let divideAndSubtract = compose(|x| x / 2, |x| x - 2);

    let finally = compose(*addAndMultiply, *divideAndSubtract);
    println!("Result is {}", finally(10));
}
Run Code Online (Sandbox Code Playgroud)

rustc不喜欢那样,无论我尝试什么,特质界限永远不会满足.错误是:

error[E0277]: the size …
Run Code Online (Sandbox Code Playgroud)

functional-programming rust

65
推荐指数
2
解决办法
1万
查看次数

是否应该在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 ×2

functional-programming ×1