Блог*
Чат*, а можете подсказать компьютерную мышь, у которой не дохнет колёсико? У моей нынешней одно из положений при прокручивании не даёт никакой реакции, а иногда даже при физическом прокручивании вниз прокручивает область на экране на одно деление вверх.
Воспользовался вашими советами и в итоге купил Logitech G102 (белую, кстати). После предыдущей мыши непривычно из-за меньшего размера и более короткого хода клавиш, но нормально работающее колёсико это перекрывает
Впервые с момента прилёта в Армению мне удалось ПОГЛАДИТЬ КОТА!
(правда, судя по внешнему виду и повадкам, это был гуляющий домашний, но всё равно)
(правда, судя по внешнему виду и повадкам, это был гуляющий домашний, но всё равно)
🥰19❤1
Forwarded from sad dev diary
crap, why didn't I use it before. Great tool for rapid prototyping
JSON to {programming_language} data type / YAML / MYSQL table / etc. converter
https://transform.tools/json-to-rust-serde
#programming #useful_websites
JSON to {programming_language} data type / YAML / MYSQL table / etc. converter
https://transform.tools/json-to-rust-serde
#programming #useful_websites
transform.tools
JSON to Rust Serde
An online REPL for converting JSON to Rust Serde Structs.
Блог*
Photo
В частности.
Вот есть git — одна из самых широко используемых систем контроля версий (не в последнюю очередь благодаря Github, но всё же). git в состоянии записывать в коммитах факт переименования файла. Но просто переименование файла не сработает, даже если не менять его содержимого — в этом случае в истории будет удаление старого файла и создание нового. Для вменяемой истории нужно использовать
Спасибо, очень удобно (нет).
Вот есть git — одна из самых широко используемых систем контроля версий (не в последнюю очередь благодаря Github, но всё же). git в состоянии записывать в коммитах факт переименования файла. Но просто переименование файла не сработает, даже если не менять его содержимого — в этом случае в истории будет удаление старого файла и создание нового. Для вменяемой истории нужно использовать
git mv old_file new_file
.Спасибо, очень удобно (нет).
🤡14👎4🤔4👍1😢1
Forwarded from ☕️ Мерлин заваривает τσάι 🐌
Я так люблю, когда программисты оптимизируют количество нажатий клавиш. Подозреваю, что сэкономленное время они тратят на саморазвитие
❤19😁4👍1🔥1
#prog #rust #rustreleasenotes
Вышла версия Rust 1.72.0! Как обычно, тут только то, что интересует меня, а полный ченджлог тут.
▪️Офигенно полезная вещь: компилятор теперь говорит о том, что имена не определены из-за того, что определяющий их код находится под неактивным
▪️Компилятор теперь не имеет ограничения на время вычисления const fn (технически ограничено включённым по умолчанию линтом, но его можно и отключить). При этом он всё ещё выдаёт предупреждения, если код из-за этого долго компилируется, но интервал между ними удваивается после каждого вывода, чтобы не спамить в консоль.
▪️Несколько линтов из Clippy втащили в компилятор, а именно:
🔹undropped_manually_drops (warn по умолчанию) — попытка явно дропнуть
🔹invalid_utf8_in_unchecked — разделив при этом на две:
🔹cmp_nan как invalid_nan_comparisons (warn по умолчанию) — явное сравнение с NaN (такое сравнение всегда возвращает ложь)
🔹cast_ref_to_mut — при кастах из
▪️Для указания трейт-объектов теперь не нужно выписывать ассоциированные типы, на которых есть ограничение
▪️Отправляющая половинка mpsc-канала из std наконец-то реализует
▪️Уточнено поведение
▪️Как я уже говорил,
▪️Опять-таки, как я уже рассказывал,
▪️Стабилизирован
Вышла версия Rust 1.72.0! Как обычно, тут только то, что интересует меня, а полный ченджлог тут.
▪️Офигенно полезная вещь: компилятор теперь говорит о том, что имена не определены из-за того, что определяющий их код находится под неактивным
#[cfg]
.▪️Компилятор теперь не имеет ограничения на время вычисления const fn (технически ограничено включённым по умолчанию линтом, но его можно и отключить). При этом он всё ещё выдаёт предупреждения, если код из-за этого долго компилируется, но интервал между ними удваивается после каждого вывода, чтобы не спамить в консоль.
▪️Несколько линтов из Clippy втащили в компилятор, а именно:
🔹undropped_manually_drops (warn по умолчанию) — попытка явно дропнуть
ManuallyDrop
.🔹invalid_utf8_in_unchecked — разделив при этом на две:
🔸invalid_utf8_in_unchecked
(deny по умолчанию) при вызове std::str::from_utf8_unchecked{, _mut}
на невалидном UTF-8 — это всегда неопределённое поведение🔸invalid_from_utf8
(warn по умолчанию) при вызове std::str::from_utf8{, _mut}
на невалидном UTF-8 — такой вызов всегда возвращает ошибку🔹cmp_nan как invalid_nan_comparisons (warn по умолчанию) — явное сравнение с NaN (такое сравнение всегда возвращает ложь)
🔹cast_ref_to_mut — при кастах из
&T
в &mut T
. allow по умолчанию, но исключительно из-за наличия false positive, к следующему релизу планируют сделать уже deny по умолчанию.▪️Для указания трейт-объектов теперь не нужно выписывать ассоциированные типы, на которых есть ограничение
Self: Sized
. Это консистентно с where Self: Sized
на методах, наличие которых не влияет на object safety, но которые нельзя вызвать на трейт-объектах. Отмечу, что указывать остальные типы для трейт-объектов всё также надо.▪️Отправляющая половинка mpsc-канала из std наконец-то реализует
Sync
.▪️Уточнено поведение
HashSet::insert
: если ключ уже есть в множестве, то он не заменяется, а переданный ключ дропается.▪️Как я уже говорил,
select_nth_unstable
теперь имеет реальную задокументированную линейную сложность.▪️Опять-таки, как я уже рассказывал,
ptr_eq
на счётчиках ссылок теперь сравнивает лишь адреса.▪️Стабилизирован
impl TryFrom<&OsStr> for &str
▪️В const-контексте теперь можно использовать CStr::from_bytes_with_nul, CStr::to_bytes, CStr::to_bytes_with_nul и CStr::to_str.👍8🔥2
Некоторые говорят писать
unsigned int
, большинство говорят писать просто unsigned
, я же говорю писать на Rust👌11😁6