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

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

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

27 ответов

9 просмотров

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

Αλεχ 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. так что подозреваю, что либо он тебе этого не говорил, либо он говорил что-то не то, либо ты что-то не так понял

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

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

Скажите, можно ли как-то "переместить" динамический массив из одной переменной в другую? Скажем, переместить из TList<> в TArray<>. Именно переместить, а не скопировать. Если ...
Eugene Krasnikov (ᴊɪɴ x)
37
комрады, че-та лыжы не едут var tmpFont: TFont; begin tmpFont:= TFont.Create; try case rgFontColor.ItemIndex of 0: tmpFont.Color:= clWindowText; 1: tmpFo...
Ed Doc
34
Вот еще криповенькая штука. uMain.pas(517,3) Warning: Case statement does not handle all possible cases И ЧО? 😂
Александр (Rouse_) Багель
15
.model small .stack 100h .data a db 'Hello, World!', '$' ; исходная строка b db 20 dup(?) ; строка b с запасом на максимальную длину .code main: ...
Алексей -man
3
вопрос, кого посмотреть в ютубе или где почитать про указатели чтобы раз и навсегда запомнить зачем они нужны и как правильно ими пользоваться? поделитесь хорошими ресурсами, ...
-
14
М-да. Почему бы просто со stringlist не работать?
Michael Longneck
23
Интересно, нет ли какого-то способа получить из dll не адрес самой метки, а адрес со смещением?
The Bird of Hermes
54
Редактор листа Excel, по сути двумерный массив ячеек. Ячейка - это экземпляр класса, у нее всякие свойства, методы. Проблема в том, что количество используемых строк и колоно...
Sergey Bodrov
2
Is there a digital way to cut the electricity from a usb in linux? It sounds weird, but it's exactly what I need to do. I tried to simulate the unplug/replug but is not the ...
Eduard Rivas
15
Решаемо? У тебя есть софт собирающийся без хинтов ворнингов?
Александр (Rouse_) Багель
9
Карта сайта