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 и конкретные индексы, не нужно мне dyn
IB
YK
trait Foo {
fn foo(self, index: std::slice::SliceIndex<Self, Output = ???>);
}
impl Foo for &[u8] {
???
}
АК
YK
YK