Size: a a a

Rust — русскоговорящее сообществo

2020 March 19

Э

Эрик in Rust — русскоговорящее сообществo
Пока твои &mut Arrays не (блджад, как там "overlap" переводится?), всё нормально.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
red75prime
Если результирующие ссылки на массив не пересекаются, то да. split_mut() такое делает, но со слайсами
А вот и нет, split_mut возвращает два слайса.
источник

r

red75prime in Rust — русскоговорящее сообществo
Mikola Summer Duck
А вот и нет, split_mut возвращает два слайса.
Я поправил "но со слайсами"
источник

Э

Эрик in Rust — русскоговорящее сообществo
Mikola Summer Duck
А вот и нет, split_mut возвращает два слайса.
... Я тебе только что сказал, что &[T] - указатель с длиной, а &[T; N] - тупо указатель + size_of.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Эрик
... Я тебе только что сказал, что &[T] - указатель с длиной, а &[T; N] - тупо указатель + size_of.
А семантика языка с тобой согласна?
источник

Э

Эрик in Rust — русскоговорящее сообществo
Mikola Summer Duck
А семантика языка с тобой согласна?
Читай выше. Я говорил, что открывать и какой код читать.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Открываешь код core либы и смотришь union Repr и FatPtr.
источник

r

red75prime in Rust — русскоговорящее сообществo
Mikola Summer Duck
А семантика языка с тобой согласна?
Есть реализация TryFrom для массивов и слайсов
источник

В

Вафель in Rust — русскоговорящее сообществo
red75prime
Да, для шареных слайсов должно быть нормально. Ссылка на массив - это в общем-то слайс но с размером в типе, а не в толстом указателе
Для &mut [_] и Box<[_]> по идее тоже
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Так-то и f64 это всего лишь u64, можно ведь легко скастовать указатель на одно в указатель на другое и шаффлить битики как нравится, разве нет?
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
(нет)
источник

M

Marat in Rust — русскоговорящее сообществo
Alexander Tchitchigin
А в чём принципиальная разница хипа и стека?
стек быстрее, выделение памяти на нем бесплатное, он почти всегда в кэше, и для команд процессора, работающих с памятью, адресуемую через esp/rsp, есть специальные оптимизации на уровне микрокоманд cpu, поэтому они иногда выполняются за меньшее количество циклов, чем с другими регистрами общего назначения
источник

r

red75prime in Rust — русскоговорящее сообществo
red75prime
Есть реализация TryFrom для массивов и слайсов
.split_mut().try_from() и получаем ссылку на кусок слайса в виде массива
источник

В

Вафель in Rust — русскоговорящее сообществo
Выглядит валидно, спасибо.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
red75prime
.split_mut().try_from() и получаем ссылку на кусок слайса в виде массива
туше́, не сразу понял о чём ты
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Тогда вопрос снят.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Marat
стек быстрее, выделение памяти на нем бесплатное, он почти всегда в кэше, и для команд процессора, работающих с памятью, адресуемую через esp/rsp, есть специальные оптимизации на уровне микрокоманд cpu, поэтому они иногда выполняются за меньшее количество циклов, чем с другими регистрами общего назначения
pub struct Rc<T: ?Sized> {
   ptr: NonNull<RcBox<T>>,
   phantom: PhantomData<RcBox<T>>,
}

Оно вроде не хипает, только указатель берёт, разве нет?
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Эрик
pub struct Rc<T: ?Sized> {
   ptr: NonNull<RcBox<T>>,
   phantom: PhantomData<RcBox<T>>,
}

Оно вроде не хипает, только указатель берёт, разве нет?
Хипает.
источник

Э

Эрик in Rust — русскоговорящее сообществo
А, да, в new().
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообществo
Rc::new принимает объект а не ссылку.
источник