Telegram
WELOVEGAMES
❤7🔥1😁1
Forwarded from Игорь Кочетков
Дело о запрете "международного общественного движения ЛГБТ" будет слушаться в закрытом судебном заседании. Значит, кому именно и какие претензии предъявляются мы не узнаем
😁13🤡2❤1🤬1
#prog #rust #rustreleasenotes
Вышла версия Rust 1.74.0! В этот раз довольно минорный релиз, изменения в основном в тулинге. Как всегда, полный ченджлог отдельно, а тут лишь выдержки.
▪️Компилятор теперь позволяет использовать в непрозрачных возвращаемых типах проекции из
▪️Ранее замыкания, которые захватывали по ссылке поля
▪️Насчёт
▪️Насчёт линтов: задавать их теперь можно через секцию в манифесте Cargo.toml. С учётом того, что эта секция наследуется в workspace, это позволяет убедиться, что в группе связанных проектов используется идентичный набор глобальных линтов, без необходимости синхронизировать их руками.
▪️
▪️Стабилизировали пачку API в стандартной библиотеке, в том числе:
🔸core::num::Saturating — адаптер для примитивных числовых типов, реализующий насыщающую семантику для арифметических операций:
🔸Реализации
Дополнительно следующие API теперь могут быть использованы в константном контексте:
🔸
▪️Как я уже писал,
▪️rustdoc теперь позволяет добавлять свои CSS-классы к блокам кода и отдельные блоки для предупреждений.
▪️В сгенерированной rustdoc документации теперь можно искать с использованием типовых параметров.
Для примера, это означает, что
Вышла версия Rust 1.74.0! В этот раз довольно минорный релиз, изменения в основном в тулинге. Как всегда, полный ченджлог отдельно, а тут лишь выдержки.
▪️Компилятор теперь позволяет использовать в непрозрачных возвращаемых типах проекции из
Self
, в которые входят лайфтаймы не из сигнатуры функции. На практике это означает, что функции с impl Trait
и async
-функции, в возвращаемом типе которых есть Self
, теперь работают всегда, а не наталкиваются на произвольные ограничения компилятора. Подробнее вместе с примерами кода, который не компилировался раньше и стал приниматься сейчас, смотри в соответствующем PR.▪️Ранее замыкания, которые захватывали по ссылке поля
#[repr(packed)]
структур, захватывали их по разному в зависимости от того, являлась ли поле корректно выровненным или нет. Из-за этого смена типа поля в packed структуре — даже не того, что было захвачено! — могло привести к смене раскладке замыкания и, как следствие, изменению поведения из-за смены порядка дропа полей. В этой версии компилятора решили избавиться от столь странного поведения: теперь поля packed структур захватываются по ссылке одинаково вне зависимости от того, насколько выровнены поля.▪️Насчёт
repr
: теперь можно явно писать #[repr(Rust)]
▪️Поменяли линты о приватных определениях внутри публичных определений (например, публичная функция, возвращающая приватный тип). Старый линт (private_in_public) страдал от того, что принимал во внимание исключительно номинальную видимость — ту, которая ставится перед именем (тип pub(in foo)
). Из-за этого линт имел формально простое, но довольно неинтуитивное поведение, причём ещё и неполное — из-за вывода типов приватный тип мог утечь способом, который старый линт не ловил. Теперь его заменили пачкой новых линтов, которые работают на эффективной видимости, т. е. принимая во внимание видимость объемлющих определений. Это даёт более полезное для людей поведение. Подробнее в соответствующем RFC.▪️Насчёт линтов: задавать их теперь можно через секцию в манифесте Cargo.toml. С учётом того, что эта секция наследуется в workspace, это позволяет убедиться, что в группе связанных проектов используется идентичный набор глобальных линтов, без необходимости синхронизировать их руками.
▪️
cargo clean
теперь поддерживает --dry-run
.▪️Стабилизировали пачку API в стандартной библиотеке, в том числе:
🔸core::num::Saturating — адаптер для примитивных числовых типов, реализующий насыщающую семантику для арифметических операций:
assert_eq!(Saturating(u32::MAX) + Saturating(1), Saturating(u32::MAX));🔸пачку методов для перевода в/из байты для
OsStr{, ing}:
as_encoded_bytes
/from_encoded_bytes_unchecked
. Ранее это было возможно только на Unix-системах через std::os::unix::ffi::OsStrExt
.🔸Реализации
From
из ссылок (обоих видов) на массивы в векторы и из массивов в {Arc, Rc}<[T]>
.Дополнительно следующие API теперь могут быть использованы в константном контексте:
🔸
core::mem::transmute_copy
🔸str::is_ascii
, [u8]::is_ascii
😙👌▪️Как я уже писал,
Cell::swap
теперь паникует на частично перекрывающихся значениях.▪️rustdoc теперь позволяет добавлять свои CSS-классы к блокам кода и отдельные блоки для предупреждений.
▪️В сгенерированной rustdoc документации теперь можно искать с использованием типовых параметров.
Для примера, это означает, что
Option::or
можно найти по запросуoption<T>, option<T> -> option<T>
👍8❤🔥3
Forwarded from Labrats
#от_подписчика
В чём различие между учёным и курицей-гриль?
Курица-гриль может прокормить семью из четырёх человек.
В чём различие между учёным и курицей-гриль?
🔥9😭6😢3
Кстати, сегодня международный мужской день
Wikipedia
Международный мужской день
праздник, отмечаемый 19 ноября
❤10🤡3🤔2🤝2
Forwarded from A bit deeper
This media is not supported in your browser
VIEW IN TELEGRAM
На просторах твиттера нашёл офигенную штуку - безопасные треугольники при разработке popup менюшек.
Если применить такой алгоритм, то юзеру будет намного более комфортно взаимодействивать с подменю.
Без лишних слов, всё достаточно очевидно по видео.
Вот статья про подход
Кстати, В IDE от JetBrains такое поддерживается с февраля 2022
Если применить такой алгоритм, то юзеру будет намного более комфортно взаимодействивать с подменю.
Без лишних слов, всё достаточно очевидно по видео.
Вот статья про подход
Кстати, В IDE от JetBrains такое поддерживается с февраля 2022
👍15🔥2
Блог*
#prog #rust RIIR fish github.com/fish-shell/fish-shell/pull/9512
Распределение по языкам в fish сейчас
🔥17🤯5