Size: a a a

2020 November 22

Oℕ

Oleg ℕizhnik in Rust Beginners
Хорошо, спасибо.
Я мыслю примерно так.
Ссылка на вектор - это в некотором смысле двойная индирекция, указатель на  что-то, что содержит указатель на массив.
А слайс - это одноразовый указатель.
Поэтому с некоторой вероятностью слайс будет эффективнее.
В этих рассуждениях есть рациональное зерно?
источник

IB

Ivan Boldyrev in Rust Beginners
Тут, конечно, два usize вместо одного, но зато доступ без extra level of indirection.
источник

Oℕ

Oleg ℕizhnik in Rust Beginners
Ага, спасибо
источник

IB

Ivan Boldyrev in Rust Beginners
Oleg ℕizhnik
Хорошо, спасибо.
Я мыслю примерно так.
Ссылка на вектор - это в некотором смысле двойная индирекция, указатель на  что-то, что содержит указатель на массив.
А слайс - это одноразовый указатель.
Поэтому с некоторой вероятностью слайс будет эффективнее.
В этих рассуждениях есть рациональное зерно?
Но если рекурсия очень глубокая, то стек кончится в два раза быстрее. Но лучше так вообще не делать.
источник

Oℕ

Oleg ℕizhnik in Rust Beginners
Нет рекурсия с контролируемой глубиной
источник

IB

Ivan Boldyrev in Rust Beginners
Тогда слайс, и тогда можно и  эту функцию и с Vec<T> использовать, и с Box<[T]>, и [T;N].
источник

Oℕ

Oleg ℕizhnik in Rust Beginners
А у них есть какой-то общий трейт? Типа AsSlice или что-то такое
источник

Oℕ

Oleg ℕizhnik in Rust Beginners
или &V: Index<RangeFull, Output=&[A]>
источник

IB

Ivan Boldyrev in Rust Beginners
Oleg ℕizhnik
А у них есть какой-то общий трейт? Типа AsSlice или что-то такое
Они все конвертируются в слайс, явно или неявно, слайс и используй.
источник

IB

Ivan Boldyrev in Rust Beginners
Oleg ℕizhnik
А у них есть какой-то общий трейт? Типа AsSlice или что-то такое
Deref<Target=[T]> можно использовать, это чуть универсальнее, но по сути ничего не даёт (и не все примеры выше его реализуют).
источник

ИЛ

Иван Лещенко... in Rust Beginners
А как в исходниках компилятора существует эта функция? https://github.com/rust-lang/rust/blob/master/compiler/rustc_codegen_llvm/src/intrinsic.rs#L27
ВЖ ll не был объявлен, и взят просто из ниоткуда
источник

АГ

Алексей Герасимов... in Rust Beginners
Иван Лещенко
А как в исходниках компилятора существует эта функция? https://github.com/rust-lang/rust/blob/master/compiler/rustc_codegen_llvm/src/intrinsic.rs#L27
ВЖ ll не был объявлен, и взят просто из ниоткуда
источник

ИЛ

Иван Лещенко... in Rust Beginners
Хмм. То-есть они ещё не стабилизированы для пользователей, но внутри компилятора уже используются?
источник

АГ

Алексей Герасимов... in Rust Beginners
Иван Лещенко
Хмм. То-есть они ещё не стабилизированы для пользователей, но внутри компилятора уже используются?
там полно такого, afaik
источник

ИЛ

Иван Лещенко... in Rust Beginners
Алексей Герасимов
там полно такого, afaik
Спасибо за ответ
источник

АГ

Алексей Герасимов... in Rust Beginners
dog fooding go brr
источник

JC

Julian =) Coffee in Rust Beginners
А dog fooding это типо попробовать еду своей собаки перед тем, как давать ей?
источник

JC

Julian =) Coffee in Rust Beginners
Я понимаю, что это фразеологизм, но не совсем понимаю как это понимать.
источник

PM

Pavel Meledin in Rust Beginners
Julian =) Coffee
Я понимаю, что это фразеологизм, но не совсем понимаю как это понимать.
если кратко: юзаешь сам что запилил, до того как отдать реальным пользователям в использование
источник

DF

Dollar Føølish in Rust Beginners
Или после , хотя бы)
источник