172 похожих чатов

А если Option<T> где T немутабельный то компилятор не попробует

это оптимизнуть до уровня одного usize?

27 ответов

24 просмотра

Иммутабельными или мутабельными бывают переменные, но не типы.

Αλεχ Zhukovsky
и то и то бывает

И какие бывают иммутабельные типы?

Mikail Bagishov
И какие бывают иммутабельные типы?

struct VecView(Vec<i32>); impl VecView { pub fn as_ref(&self) -> &[i32] { &self.0 } }

Αλεχ Zhukovsky
struct VecView(Vec<i32>); impl VecView { pub fn...

Я кажется понимаю, что ты имеешь в виду (тип, который не предоставляет никаких сеттеров), но это по-прежнему не про иммутабельность типа (а про какие-то более высокоуровневые штуки типа дизайна апи), потому что x.0 = vec![] Или somehow_assign_with_unsafe(x, vec![])

Αλεχ Zhukovsky
struct VecView(Vec<i32>); impl VecView { pub fn...

Так значение целиком ты всё равно можешь перезаписать

Mikail Bagishov
Я кажется понимаю, что ты имеешь в виду (тип, кото...

оно приватное, ты не можешь так сделать. Вклбючая ансейф который УБ без репра

Αλεχ Zhukovsky
оно приватное, ты не можешь так сделать. Вклбючая ...

Предполагается, что первый вариант кода находится в том же модуле.

Mikail Bagishov
Предполагается, что первый вариант кода находится ...

нет, нет никакого другого кода больше в том же модуле. В чем и суть

Αλεχ Zhukovsky
оно приватное, ты не можешь так сделать. Вклбючая ...

Без UB можно обойтись: сначала вычисляем оффсет, вычитая адрес ссылки на x.0 из адреса x.

Mikail Bagishov
Без UB можно обойтись: сначала вычисляем оффсет, в...

ок, давай я буду в начало дописывать рандомное число приватных байт. Лучше станет?:)

Денис
тогда это не свойство типа

да ну. Тогда получается что у NonZeroU32 нет свойства не бьыть нулем ведь я могу дописать функцию которая инитит его из нуля!

Mikail Bagishov
Эта функция будет UB-шной

Не будет, нарушение инвариантов типов (кроме примитивных) не видет к уб обсуждалосб уже

Денис
всё так и есть

ну тогда никакие типы не дают никаких гарантий

Αλεχ Zhukovsky
Не будет, нарушение инвариантов типов (кроме прими...

На NonZeroU32 стоит волшебный атрибут, поэтому UB все-таки будет

Mikail Bagishov
На NonZeroU32 стоит волшебный атрибут, поэтому UB ...

то есть юзерский нонзеро написать невозможно по-вашему? Для меня разница только в том что в одном случае компиль соптимизирует Опшн<нонзеро> а вд ругом нет. А у вас получается детали реализации типа атрибутов конечной генерации имеют какой-то важный смысел

Αλεχ Zhukovsky
то есть юзерский нонзеро написать невозможно по-ва...

Это уже какой-то library UB vs language UB начинается, это отдельная интересная дискуссия про отсутствующий стандарт раста

Mikail Bagishov
Это уже какой-то library UB vs language UB начинае...

Мне ральф это прямым текстом отвечал на вопрос "является ли создание String::from_utf8_unchecked из невалидного байтового массива уб". Он сказал что уб на гарантии типов не распространяются и что нет, не является

Αλεχ Zhukovsky
Мне ральф это прямым текстом отвечал на вопрос "яв...

смотрим доку > If this constraint is violated, undefined behavior results, as the rest of Rust assumes that &strs are valid UTF-8. так что подозреваю, что либо он тебе этого не говорил, либо он говорил что-то не то, либо ты что-то не так понял

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта