1.83K subscribers
3.3K photos
132 videos
15 files
3.58K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Блог*
I love Rust for letting me write self-describing code trait Т { type T; const TT: (Self::T, Self::T); } trait ТТ<T> { const Т: T; } trait Sеlf { const Sеlf: Self; } const fn t<T: Т<T = isize>>() -> isize { impl<T: ТТ<T>> Sеlf for T…
Так вот, Rust reference гласит, что для default representation enum (а The является именно таковым, потому что на нём нет #[repr]-атрибутов) дискриминанты имеют тип isize (что, однако, не мешает компилятору выбрать тип поменьше для представления enum). Таким образом, обобщённый параметр у self_describing выводится равным возвращаемому типу, т. е. isize.

Так какое же значение возвращается? Пойдёт снизу вверх.

self_describing принимает тип, ограниченный трейтом SelfValue, и возвращает ассоциированную константу SELF_VALUE;
|SelfValue реализован для всех типов T, реализующих GenericValue<T>;
| |GenericValue<T> реализован для всех типов, реализующих PairValue<T = isize>;
| | |PairValue<T = isize> реализован для isize с PAIR_VALUE = (2, 11);
| |GenericValue<isize> реализован для isize с GENERIC_VALUE = t::<isize>();
| | |функция t принимает тип, ограниченный PairValue<T = isize>, и возвращает комбинацию от составляющих T::PAIR_VALUE;
| | |для isize функция t возвращает 2 * 11 + 20 = 42;
| |<isize as GenericValue<isize>>::GENERIC_VALUE = 42;
|<isize as SelfValue>::SELF_VALUE = 42;
self_describing::<isize>() == 42;

Иными словами,

enum The {
Answer = 42,
}

В последней строке создаётся неиспользуемая константа, тип которой задан, как массив длины 42, и которая инициализируется массивом длины The::Answer as usize, то есть 42. Так как типы слева и справа совпадают, то код компилируется (и выдаёт предупреждение о неиспользуемых The и self_describing).

То есть "Ответ на главный вопрос жизни, вселенной и всего такого" — это 42, что мы и проверили в Rust на этапе компиляции.
😐2
Парочка #meme про твиттер
#meme про... Ножницы
🌚17🍌4
Forwarded from shitposting 3.0 [+ dragons]
👍9😁21
@shitposting_three, пожалуйста, не выкладывай столько мемов, среди них много слишком хороших и в итоге весь Блог* в твоих репостах(
🤮5😭5❤‍🔥4😁2👍1
Давайте поговорим о красивом.
Блог*
Давайте поговорим о красивом.
А впрочем, что это мы всё обо мне да обо мне.
🤮137🤡6😁2🤔1
#meme про образование
Forwarded from какография
😁22😢1
Forwarded from shitposting 3.0 [+ dragons]
#meme про мужиков
Forwarded from Trap ~ езные мемы😇 (ᴀᴍᴋஇ)
🤔85