#prog #rust #rustreleasenotes
Вышла версия Rust 1.73.0! Как обычно, тут только выдержки, а полный ченджлог — для компилятора, для cargo и для clippy.
В целом довольно минорный релиз, сильных причин обновлять нету.
▪️Текущее поведение компилятора — считать
▪️В макросах теперь можно вставлять метапеременные типа block после ключевых слов
▪️Как и обещано, линт
▪️Задокументирована текущая (v0) используемая rustc версия манглинга имён.
▪️Строку теперь можно индексировать парами
Код:
▪️Для
▪️Для примитивных беззнаковых числовых типов доступны методы div_ceil (деление с округлением вверх, наконец-то!), next_multiple_of и checked_next_multiple_of. Все из них работают в cosnt-контексте.
▪️Ещё в const-контексте теперь можно создавать слабые ссылки (и Arc-сорта тоже) и переводить NonNull в ссылку.
Вышла версия Rust 1.73.0! Как обычно, тут только выдержки, а полный ченджлог — для компилятора, для cargo и для clippy.
В целом довольно минорный релиз, сильных причин обновлять нету.
▪️Текущее поведение компилятора — считать
impl
-ы трейтов неперекрывающимися, если попытка их унифицировать приводит к циклу в логике. Теперь на это поведение выдаётся предупреждение, поскольку, возможно, это могут поменять в будущем.▪️В макросах теперь можно вставлять метапеременные типа block после ключевых слов
try
и async
. Пример кода, который не работал раньше, но работает теперь (результат раскрытия второго макроса, конечно, всё ещё требует активации фичи):▪️Как я уже писал, компилятор теперь ловит безусловную рекурсию в дропах.
macro_rules! create_async {
($body:block) => {
async $body
};
}
macro_rules! create_try {
($body:block) => {
try $body
};
}
▪️Как и обещано, линт
cast_ref_to_mut
(на касты из &T
в &mut T
— в том числе и не напрямую) теперь deny
по умолчанию.▪️Задокументирована текущая (v0) используемая rustc версия манглинга имён.
▪️Строку теперь можно индексировать парами
core::ops::Bound
▪️Немного поменяли формат сообщений паник по умолчанию для assert!
и assert_eq!
/assert_ne!
. Примеры:Код:
До:
fn main() {
let file = "ferris.txt";
panic!("oh no! {file:?} not found!");
}
После:
thread 'main' panicked at 'oh no! "ferris.txt" not found!', src/main.rs:3:5
Код:
thread 'main' panicked at src/main.rs:3:5:
oh no! "ferris.txt" not found!
До:
fn main() {
assert_eq!("🦀", "🐟", "ferris is not a fish");
}
После:
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `"🦀"`,
right: `"🐟"`: ferris is not a fish', src/main.rs:2:5
По моему, стало более читаемо.
thread 'main' panicked at src/main.rs:2:5:
assertion `left == right` failed: ferris is not a fish
left: "🦀"
right: "🐟"
▪️Для
LocalKey<Cell<T>>
и LocalKey<RefCell<T>>
(LocalKey
— тип, в который заворачиваются значения в макросе thread_local!) добавили несколько методов для прямой манипуляции с значениями, без использования общего with
. Мало того, что это позволяет сделать код нагляднее, так ещё и позволяет в некоторых случаях избежать инициализации thread local переменной значением, которое будет тут же перезаписано. При этом в общности API не теряет, поскольку на практике почти всегда из-за требований внутренней изменяемости значение и так было завёрнуто в Cell
или RefCell
.▪️Для примитивных беззнаковых числовых типов доступны методы div_ceil (деление с округлением вверх, наконец-то!), next_multiple_of и checked_next_multiple_of. Все из них работают в cosnt-контексте.
▪️Ещё в const-контексте теперь можно создавать слабые ссылки (и Arc-сорта тоже) и переводить NonNull в ссылку.
GitHub
rust/RELEASES.md at master · rust-lang/rust
Empowering everyone to build reliable and efficient software. - rust-lang/rust
👍9❤1
Блог*
Photo
В Чат*е советуют ещё Wysiwyg-редакторы для ASCII-диаграмм:
asciiflow.com
textik.com
(thanks @tech_b0lt_Genona)
asciiflow.com
textik.com
(thanks @tech_b0lt_Genona)
❤2👍1
Блог*
Хочешь почувствовать себя старым? Первый фильм про Гарри Поттера вышел в 2001 году.
А "Ледниковый период" — годом позже, в 2002.
То есть 21 год назад.
То есть 21 год назад.
🤯10🤡1
Подписчики, чат канала подвёргся внезапному наплыву новых пользователей. Обычно это означает массированную спам-атаку. Во избежание неудобств я временно закрыл публичный доступ к Чат*у.
Также я скопом удалил всех новых участников чата. Если вдруг я удалил кого-то из реальных людей, не ботов — пишите в личку (ссылка в описании канала), разберёмся в частном порядке
UPD: волна вроде кончилась, Чат* снова открыт
Также я скопом удалил всех новых участников чата. Если вдруг я удалил кого-то из реальных людей, не ботов — пишите в личку (ссылка в описании канала), разберёмся в частном порядке
UPD: волна вроде кончилась, Чат* снова открыт
👍5😢1
Forwarded from Jokes++ (Dmitry Alimov)
Если медленно скроллить можно увидеть мультик 🫨
https://github.com/barak/opencv/blob/master/modules/features2d/src/fast.cpp
https://github.com/barak/opencv/blob/master/modules/features2d/src/fast.cpp
GitHub
opencv/modules/features2d/src/fast.cpp at master · barak/opencv
opencv svn repo mirror + personal debian packaging info - barak/opencv
🥴12😁3