Блог* – Telegram
1.9K subscribers
3.46K photos
135 videos
15 files
3.69K links
Блог со звёздочкой.

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #rust хайлайты:

* макрос env! теперь работает и с сырыми строками.
* раньше алиасы типов были чем-то вроде макросов в том смысле, что их корректность проверялась после раскрытия. Синтаксически Rust позволяет иметь ограничения на обобщённые типы у алиасов, но они игнорируются. После этого PR они действительно проверяются — правда, пока лишь за фичей.
* парсер Rust теперь корректно обрабатывает тернарный оператор и выдаёт сообщение о том, что такового в Rust нет.
* реализованы обобщённые константы. Фича пока сырая, даже RFC под неё не написан.
* конструкторы слабых счётчиков ссылок теперь стабилизированы как const-функции, как и NonNull::as_ref
* AtomicBool имеет такое же представление в памяти, как и bool. Некоторые платформы не имеют нативных атомарных операций для 8-битных значений и потому эмулируют их при помощи CAS-циклов на атомиках большего размера. Этот PR переделывает swap-операции над AtomicBool на атомарные and и or, эксплуатируя тот факт, что bool может иметь только значения 0 и 1. Это изменение положительно сказалось на генерируемом коде.
* io::Empty теперь умеет то же, что и io::Sink. Внимание, этот тривиальный PR проболтался БОЛЬШЕ ГОДА!!!
* rustdoc некорректно рендерил impl Sized типы. Этот PR исправляет недоработку

Было:

fn sized(x: impl ) -> impl
fn sized_outlives<'a>(x: impl 'a) -> impl 'a
fn maybe_sized(x: &impl ) -> &impl
fn debug_maybe_sized(x: &impl Debug) -> &impl ?Sized + Debug

Стало (как и должно быть):

fn sized(x: impl Sized) -> impl Sized
fn sized_outlives<'a>(x: impl Sized + 'a) -> impl Sized + 'a
fn maybe_sized(x: &impl ?Sized) -> &impl ?Sized
fn debug_maybe_sized(x: &(impl Debug + ?Sized)) -> &(impl Debug + ?Sized)

* В clippy есть линт на код подобного вида:

let mut vec = Vec::with_capacity(len);
vec.resize(len, 0);

, предлагая переписать на

let mut vec = vec![0; len];

, что и идиоматичнее, и быстрее. Теперь линт также работает, если вектор инициализирован через Vec::new().
* map_or на Result и Option помечен, как #[must_use].
* Command теперь может перенаправлять stderr порождённого процесса в stdout родителя.
5👍3
#prog #meme про оптимизацию
Forwarded from shitposting 3.0 [+ dragons]
😁111
6👍3😁2❤‍🔥1👎1
🥰5😁52🔥2🌚1
Медиум, ты охренел
🤡9💩6😁2
Отсутствие фида в телеге — это не баг, это фича
👍8
👍7
👎5🤡3👏1🤮1💩1
🌚13
Forwarded from shitposting 3.0 [+ dragons]
…or bi
13😁3🤮3💩2🤡2
Forwarded from shitposting 3.0 [+ dragons]
10💩4🤡2🤮1
Хочешь почувствовать себя старым?

Первый фильм про Гарри Поттера вышел в 2001 году.
😱7👎1
https://fuckjava.com

Подглядел в одном из закрытых чатов.
😁16
#meme про жизу чай
😁15😢4🌚2