TGViewer
Channel Public Channel
Блог*

Блог*

@dereference_pointer_there

Блог со звёздочкой.

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Subscribers
1.99K
Photos
4K
Videos
157
Links
4.1K

Showing posts older than #10717 · Back to latest

Older Posts 19 shown
Post #10716 1.09K
#meme про почтальонов
  • 😁 5
  • ❤ 4
  • 🤯 2
  • 🤔 1
Post #10711 1.2K
Gamers out of context
  • 😁 11
Post #10710 1.28K
Надо брать

#game #meme
  • 😁 17
  • ❤ 1
Post #10709 1.05K
На экране выбора медиа для прикрепления к посту иконка места для снимка прокручивается над всем остальным
  • 😁 9
  • 🌚 4
Post #10706 1K
#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-а целиком.
  • 👍 8
  • 😁 1
Post #10705 1.71K
#meme про ржавчину
  • ❤ 10
Post #10704 1.28K
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
  • 🤣 27
  • ❤ 2
  • 🥴 2
  • 🔥 1
  • 🤔 1
Post #10703 1.22K
#prog #meme про мамку

Source
  • 😁 25
  • 💯 3
  • 🤡 1
  • 🤨 1
Post #10702 1.06K

Forwarded from Lynx around and find out

Проиграл в голосину с названия порта на питон
  • 🤣 19
  • 😍 9
  • 👍 2
  • 😁 2
  • ❤ 1
  • 🍌 1
Post #10701 1.09K
😒🤚 archive
😏👉 rkyv
  • 🤔 2
Post #10700 1.27K
#meme про мужика
  • 💯 28
  • ❤ 9
  • 🤡 6
  • 😁 5
  • 🥰 2
  • 🤔 1
Post #10698 1.15K

Forwarded 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 будет константа, а не вызов функции? Тоже да.
  • ❤ 5
  • 🤔 2
  • 🤡 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →