A
Size: a a a
A
K
K
A
K
A
K
АК
fn f(data: &[u8], index: std::ops::Range<usize>), который внутри себя зовёт data.get(index). Он успешно работает для диапазонов вида A..B. Теперь я хочу его расширить так, чтобы он принимал и A.., и ..B и прочие виды диапазонов (то есть всё то, что может принимать [u8]::get). Жонглирование с std::ops::RangeBounds и std::slice::SliceIndex не дало результатов. Как правильно реализовать эту идею?K
fn f(data: &[u8], index: std::ops::Range<usize>), который внутри себя зовёт data.get(index). Он успешно работает для диапазонов вида A..B. Теперь я хочу его расширить так, чтобы он принимал и A.., и ..B и прочие виды диапазонов (то есть всё то, что может принимать [u8]::get). Жонглирование с std::ops::RangeBounds и std::slice::SliceIndex не дало результатов. Как правильно реализовать эту идею?IB
fn f(data: &[u8], index: std::ops::Range<usize>), который внутри себя зовёт data.get(index). Он успешно работает для диапазонов вида A..B. Теперь я хочу его расширить так, чтобы он принимал и A.., и ..B и прочие виды диапазонов (то есть всё то, что может принимать [u8]::get). Жонглирование с std::ops::RangeBounds и std::slice::SliceIndex не дало результатов. Как правильно реализовать эту идею?АК
fn f<T: std::slice::SliceIndex<[u8], Output = u8>>(data: &[u8], index: T) {
data.get(index);
}[u8], сейчас попробую ещё разIB
Output = u8, то функция только одно значение может возвращать, что логично. У Range Output должен быть [u8]АК
Output = u8, то функция только одно значение может возвращать, что логично. У Range Output должен быть [u8]АК
trait Foo {
fn foo(self, index: std::slice::SliceIndex<Self, Output = ???>);
}
impl Foo for &[u8] {
???
}АК
dyn, но казалось бы, везде в местах использования у меня будет конкретный Self и конкретные индексы, не нужно мне dynIB
YK
trait Foo {
fn foo(self, index: std::slice::SliceIndex<Self, Output = ???>);
}
impl Foo for &[u8] {
???
}АК
YK
YK