Size: a a a

2020 December 16

A

Adatan in Rust Beginners
Переменные окружения?
источник

K

Kitsu in Rust Beginners
ну или их же можно указать в .cargo/config, чтоб не перечислять каждый раз
источник

K

Kitsu in Rust Beginners
Adatan
Переменные окружения?
*переменная
источник

A

Adatan in Rust Beginners
Kitsu
ну или их же можно указать в .cargo/config, чтоб не перечислять каждый раз
Есть примеры из cargo book?
источник

K

Kitsu in Rust Beginners
Adatan
Есть примеры из cargo book?
ээ, а причем тут карго бук? она вообще не вызывает компилятор rustc
источник

A

Adatan in Rust Beginners
Я имел ввиду примеры, как работать с PROJECT/config/...
источник

K

Kitsu in Rust Beginners
Adatan
Я имел ввиду примеры, как работать с PROJECT/config/...
источник

АК

Александр Караев... in Rust Beginners
Привет всем.
Я написал метод вроде 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

Kitsu in Rust Beginners
Александр Караев
Привет всем.
Я написал метод вроде fn f(data: &[u8], index: std::ops::Range<usize>), который внутри себя зовёт data.get(index). Он успешно работает для диапазонов вида A..B. Теперь я хочу его расширить так, чтобы он принимал и A.., и ..B и прочие виды диапазонов (то есть всё то, что может принимать [u8]::get). Жонглирование с std::ops::RangeBounds и std::slice::SliceIndex не дало результатов. Как правильно реализовать эту идею?
Почему со SliceIndex не получилось? Должно с ним работать
источник

IB

Ilya Bogdanov in Rust Beginners
Александр Караев
Привет всем.
Я написал метод вроде fn f(data: &[u8], index: std::ops::Range<usize>), который внутри себя зовёт data.get(index). Он успешно работает для диапазонов вида A..B. Теперь я хочу его расширить так, чтобы он принимал и A.., и ..B и прочие виды диапазонов (то есть всё то, что может принимать [u8]::get). Жонглирование с std::ops::RangeBounds и std::slice::SliceIndex не дало результатов. Как правильно реализовать эту идею?
источник

АК

Александр Караев... in Rust Beginners
Kitsu
Почему со SliceIndex не получилось? Должно с ним работать
действительно, на простом примере заработало:
fn f<T: std::slice::SliceIndex<[u8], Output = u8>>(data: &[u8], index: T) {
   data.get(index);
}


правда у меня ситуация чуть сложнее я пытаюсь написать вспомогательный трейт и реализовать его для [u8], сейчас попробую ещё раз
источник

IB

Ilya Bogdanov in Rust Beginners
Если Output = u8, то функция только одно значение может возвращать, что логично. У Range Output должен быть [u8]
источник

АК

Александр Караев... in Rust Beginners
Ilya Bogdanov
Если Output = u8, то функция только одно значение может возвращать, что логично. У Range Output должен быть [u8]
да у меня ошибки раньше сыпятся :)
Output поправлю на [u8], спасибо
источник

АК

Александр Караев... in Rust Beginners
trait Foo {
   fn foo(self, index: std::slice::SliceIndex<Self, Output = ???>);
}

impl Foo for &[u8] {
  ???
}


вот это не могу заставить работать
источник

АК

Александр Караев... in Rust Beginners
компилятор настойчиво хочет от меня dyn, но казалось бы, везде в местах использования у меня будет конкретный Self и конкретные индексы, не нужно мне dyn
источник

IB

Ilya Bogdanov in Rust Beginners
!спам
источник

YK

Yevhen Kazmin in Rust Beginners
Александр Караев
trait Foo {
   fn foo(self, index: std::slice::SliceIndex<Self, Output = ???>);
}

impl Foo for &[u8] {
  ???
}


вот это не могу заставить работать
А зачем Output в трейте указывать?
источник

АК

Александр Караев... in Rust Beginners
Yevhen Kazmin
А зачем Output в трейте указывать?
я не силён в трейтах, поэтому перепробовал множество разных комбинаций.
если кто-нибудь подкинет рабочий пример - буду рад
источник

YK

Yevhen Kazmin in Rust Beginners
Александр Караев
я не силён в трейтах, поэтому перепробовал множество разных комбинаций.
если кто-нибудь подкинет рабочий пример - буду рад
Стоп, там же SliceIndex - трейт, поэтому в теории в функцию можно передать любую его имплемантацию. Поэтому оно и просит dyn. Можно сделать generic версию. (Сейчас плейграунд сделаю)
источник

YK

Yevhen Kazmin in Rust Beginners
Александр Караев
я не силён в трейтах, поэтому перепробовал множество разных комбинаций.
если кто-нибудь подкинет рабочий пример - буду рад
А какое вообще ожидаемое поведение? Что должен значить трейт Foo и его метод
источник