uz
Feedback

Firibgarlarga uchmang! Telemetrio bunday kanallarni topadi va belgilaydi 👉 Belgini ko‘rmoqchi bo‘lsangiz, obuna bo‘ling

Блог*

Блог*

Kanalga Telegram’da o‘tish

Блог со звёздочкой. Много репостов, немножко программирования. Небольшое прикольное комьюнити: @decltype_chat_ptr_t Автор: @insert_reference_here

Ko'proq ko'rsatish
1 986
Obunachilar
-424 soatlar
-27 kun
+730 kun
Postlar arxiv
Repost from N/a
#achievement unlocked: Чихнув прокусить язык до крови.

Gamers out of context
Gamers out of context

Надо брать #game #meme
Надо брать #game #meme

На экране выбора медиа для прикрепления к посту иконка места для снимка прокручивается над всем остальным
На экране выбора медиа для прикрепления к посту иконка места для снимка прокручивается над всем остальным

✊
✊

#kbd
#kbd

#prog #rust #rustreleasenotes Вышла версия Rust 1.93.0! Как обычно, тут только избранное, остальное только в детальных заметках о релизе. (да, я выкладываю анонс с опозданием больше недели, и что ты мне сделаешь?) В этот раз большинство изменений связаны со стандартной библиотекой. ▪️Немного печальное изменение: даже с установлением #[global_allocator] std всё ещё может вызывать System аллокатор. По крайней мере, на core это не распространяется. ▪️Компилятор теперь выдаёт предупреждение на #[repr(C)]-перечисления, у которых значения дискриминантов не умещаются в сишный int. Смешно, но до C23 у сишных enum нельзя было указать численный тип и нельзя было использовать значения больше int для дискриминантов. ▪️Компилятор теперь выдаёт предупреждение на попытку вызвать метод на const-значении, который эксплуатирует внутреннюю изменяемость. Так как константы инлайнятся по месту использования, эти изменения не будут видны. Обычно это является следствием ошибки — использования const вместо static (и я, кстати, такую ошибку уже делал). ▪️Метод append на BTreeSet и BTreeMap теперь сохраняет ключ из исходной коллекции, если ключи считаются равными через ==. До этого перезаписывались и ключ, и значение. ▪️Стабилизированы API: 🔸assume_init_drop, assume_init_ref и assume_init_mut на MaybeUninit<T> 🔸write_{copy, clone}_of_slice на [MaybeUninit<T>] 🔸into_raw_parts на String и на Vec. Странно, что только сейчас, потому что обратные from_raw_parts методы были стабилизированы ещё в версии 1.0. 🔸методы для непроверяемых (и потому потенциально дающих UB) битовых сдвигов в обе стороны на примитивных числах, а на знаковых — ещё и unchecked_neg 🔸методы для перевода ссылок на слайсы в (опциональные, разумеется) ссылки на массивы и сырых указателей на слайсы в сырые указатели на массивы, включая мутабельные варианты 🔸pop_front_if и pop_back_if на VecDeque 🔸std::fmt::from_fn для ad-hoc форматирования через переданную функцию. Позволяет избежать создания одноразовых типов, нужных только для форматирования ▪️Cargo теперь прокидывает значение конфигурации debug_assertions в билд-скрипты. ▪️Команда cargo tree теперь позволяет использовать для форматирования записей в дереве длинные имена для элементов шаблонов. Например, следующие два вызова эквивалентны:
cargo tree --format='{p} {f}'
cargo tree --format='{package} {features}'
▪️cargo clean теперь может удалять артефакты компиляции из всего workspace-а целиком.

photo content

buttplug is now 15 crates instead of 1 gigantic horribly feature gated crate i just got rate limited by crates.io trying to publish them all buttplug is too big to fit in crates
Source

#prog #meme про мамку Source
#prog #meme про мамку Source

Проиграл в голосину с названия порта на питон
Проиграл в голосину с названия порта на питон

😒🤚 archive 😏👉 rkyv

photo content

Repost from N/a
го-вно.рф Я сделяль

Repost from Random Rust Dev
Я два дня сражался с тем фактом, что в Rust нельзя просто взять и написать
trait Foo {
  const fn bar(arg: Arg) -> Ret;
}
почему? потому, оставили невозможным что бы дизайнить взаимодействие конста и трейтов в спокойствии еще несколько лет. Если бы без Arg - я бы просто сделал const BAR: Ret. Если что const BAR<const ARG: Arg>; Тоже нельзя, но хотя бы в найтли можно. Пробовал сделать функцию не const, но писать её, как если бы она была const. Надеялся, что соптимизируется. До некоторой глубины действительно оптимизировалось. В итоге пришел вот к такой форме "конст-функции-на-стейбле"
trait Foo {
  type Bar<const ARG: Arg>: RetType;
}

trait RetType {
  const VALUE: Ret;
}


impl Foo for FooImpl {
  type Bar<const ARG: Arg> = FooBar<ARG>;
}

struct FooBar<const ARG: Arg>;
impl RetType for FooBar<const ARG: Arg> {
  const VALUE: Ret = {
    // faked const fn body.
  };
}
Это ужасно выглядит? Да. Это гарантирует, что в результате компиляции на месте FooImpl::Bar::<ARG>::VALUE будет константа, а не вызов функции? Тоже да.

photo content

Сегодня на моей игре пятеро кобольдов дрались против одержимой куклы и кошка одного из кобольдов добила зомби-лошадь. Других новостей у меня для вас нет

photo content

В СМЫСЛЕ УЖЕ ФЕВРАЛЬ