rusta::mann
< мем из профунктора Я сгорел, ведь правильно приготовленный type-driven design оберегает от кучи логических ошибок, особенно связанных с проверками инвариантов (пресловутый is_initialized() вместо типа, который гарантирован находиться в валидном состояннии…
dusted.codes
The type system is a programmer's best friend
Programming, Coffee and Indie Hacking
Блог*
Осторожно, если вы оставляете комментарии под моими постами — я могу найти ваш публичный блог и что-то с него репостнуть
Или если вы репостите из Блог*а (что я и продемонстровал выше)
🤔3
Forwarded from Ascii Moth (Андрей)
Gitconf - оверлейная утилита для удобного управление конфигом git'a.
Git сам по себе имеет достаточно богатые возможности конфигурации, которые можно применять, как для отдельных репозиториев так и для групп. Но изменение настроек все еще требует либо ручного ввода команд
Gitconf же позволяет создать т.н. профили конфигурации, между которыми в отдельно взятом репозитории можно переключаться в одну команду.
#mycode #CC0 #rust #oldproject
Git сам по себе имеет достаточно богатые возможности конфигурации, которые можно применять, как для отдельных репозиториев так и для групп. Но изменение настроек все еще требует либо ручного ввода команд
git config ..., либо правки .gitconfig или .git/config.Gitconf же позволяет создать т.н. профили конфигурации, между которыми в отдельно взятом репозитории можно переключаться в одну команду.
#mycode #CC0 #rust #oldproject
👍2😁1
Forwarded from SoFCheck
Интересный факт: GitHub умеет парсить
Cargo.toml для Rust и понимать, кто использует какие репозитории в качестве зависимостей. Так я узнал, что у моего owlchess появились пользователи, кроме меня :) Первому пользователю я вручил pull request с исправлениями, которые делают использование owlchess более простым и идиоматичным👍8
#prog
Немного о возможностях jq, программы для обработки JSON в командной строке.
t.iss.one/brain_dump_etc/440
Немного о возможностях jq, программы для обработки JSON в командной строке.
t.iss.one/brain_dump_etc/440
Telegram
brain_dump_etc
Есть такая программка — jq. Используется для работы с JSON, делает выборки данных из глубоко вложенных структур, может что-то подменять на лету. Применяется, как правило, в сценариях автоматизации. Думаю, что слышали про неё многие. Казалось бы, ну что тут…
👍3
#prog #typescript #abnormalprogramming
Assembly interpreter inside of TypeScript's type system
Автору пришлось повысить лимиты внутри исходников компилятора Typescript, чтобы это заработало и не падало из-за слишком глубокого инстанцирования.
(thanks @randomstuffilike)
Assembly interpreter inside of TypeScript's type system
Автору пришлось повысить лимиты внутри исходников компилятора Typescript, чтобы это заработало и не падало из-за слишком глубокого инстанцирования.
(thanks @randomstuffilike)
🔥3😁1🥴1
Forwarded from Alexander
Блог*
if (Math.random() >= 0.5) print(chooseRandomWarning())
Похожим образом работает борроу чекер по мнению неосиливших Rust
😁24🤣1
Блог*
А для того, чтобы оно всё-таки работало, нужно, чтобы реализовали impl Fn() -> impl Trait in return position (привет, Вафель) и, желательно, синтаксис для явного написания замыкания с полиморфизмом высшего ранга. И то, кстати, не факт, что сработает, поскольку…
#prog #rust #rustlib
Ну а пока синтаксис для явного написания замыканий с полиморфизмом высшего ранга отсутствует, можно использовать higher_order_closure:
Ну а пока синтаксис для явного написания замыканий с полиморфизмом высшего ранга отсутствует, можно использовать higher_order_closure:
#[macro_use]
extern crate higher_order_closure;
fn main () {
let f = higher_order_closure! { // или hrtb!
for<'any> |x: &'any i32| -> &'any i32 {
x
}
};
{
let local = 42;
f(&local);
}
f(&42);
}
Поддержка lifetime elision также присутствует:let f = hrtb! {
|x: &'_ i32| -> &'_ i32 {
x
}
};docs.rs
higher_order_closure - Rust
`::higher-order-closure`
Пачка небольших приятных изменений для #prog #rust.
Parser: Recover from using colon as path separator in imports — простое двоеточие в списке импорта теперь трактуется, как опечатка при написании
Recover wrong-cased keywords that start items (привет, Вафель) — аналогично парсер теперь продолжает разбор после ключевых слов, набранных не в том регистре. Не во всех местах, но всё же.
Suggest is_some when we've found Option but expected bool.
Suggest removing unnecessary . to use a floating point literal — для тех случаев, когда там, где ожидается число с плавающей точкой, по факту диапазон. Может быть опечаткой.
Consider #[must_use] annotation on async fn as also affecting the Future::Output.
И небольшая замена семантики для большей консистентности и меньшей хрупкости кода: Remove drop order twist of && and || and make them associative.
TL;DR;
Порядок дропа после изменения: 1, 2, 3, 4
Parser: Recover from using colon as path separator in imports — простое двоеточие в списке импорта теперь трактуется, как опечатка при написании
::. Это всё ещё ошибка синтаксиса, но теперь она не мешает парсить код дальше.Recover wrong-cased keywords that start items (привет, Вафель) — аналогично парсер теперь продолжает разбор после ключевых слов, набранных не в том регистре. Не во всех местах, но всё же.
Suggest is_some when we've found Option but expected bool.
Suggest removing unnecessary . to use a floating point literal — для тех случаев, когда там, где ожидается число с плавающей точкой, по факту диапазон. Может быть опечаткой.
Consider #[must_use] annotation on async fn as also affecting the Future::Output.
async-функции — не более, чем функции, возвращающие анонимную футуру. До этого изменения атрибут #[must_use] отслеживал (не)использование этой самой футуры, что технически верно, но не особо полезно на практике. После этого изменения предупреждение также срабатывает и при неиспользовании значения, которое вернул .await.И небольшая замена семантики для большей консистентности и меньшей хрупкости кода: Remove drop order twist of && and || and make them associative.
TL;DR;
f(1).g() && f(2).g() && f(3).g() && f(4).g()
Порядок дропа до изменения: 2, 3, 4, 1Порядок дропа после изменения: 1, 2, 3, 4
GitHub
Parser: Recover from using colon as path separator in imports by mucinoab · Pull Request #103443 · rust-lang/rust
I don't know if this is the right approach, any feedback is welcome.
r? @compiler-errors
Fixes #103269
r? @compiler-errors
Fixes #103269
👍3🔥1