我有两个(非常大)的数组foo和bar相同的类型.为了能够编写一些不错的代码,我想获得result两个数组串联的只读片.此操作必须在O(1)时间和空间中运行.
数组访问result也必须在O(1)中.更一般地说,如果result是k数组切片的串联,则result应该在O(k)中运行任意数组访问.
我不想复制的任何元素foo,也没有bar.
这似乎很容易实现到Rust核心,但没有多少搜索给我带来了解决方案.
我有一个Foo从另一个特征继承的特征Bar.Bar有一个相关的类型Baz.Foo限制Baz使得Baz必须实现Hoge.
trait Hoge {}
trait Bar {
type Baz;
}
trait Foo: Bar where Self::Baz: Hoge {}
Run Code Online (Sandbox Code Playgroud)
但是,当我定义一个需要通用类型T来实现的泛型函数时Foo,
// [DESIRED CODE]
fn fizz<T: Foo>(buzz: T) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
rustc抱怨,EO277除非我T明确约束:
fn fizz<T: Foo>(buzz: T) where T::Baz: Hoge {
// ...
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我需要这样做.我想能写[DESIRED CODE].建议的方法是什么?
rust ×2