1.84K subscribers
3.42K photos
134 videos
15 files
3.66K links
Блог со звёздочкой.

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

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Снег пошёл — к сессии.
Снег сошёл — к сессии.
5😢2
— Ну и зачем ты в эти свои игры играешь? Как тебе это в жизни пригодится?
💩3
😁4🤔1
P. S.: предложение не является публичной офертой
😁2
Forwarded from Ascii Moth (Андрей)
Gitconf - оверлейная утилита для удобного управление конфигом git'a.

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 #typescript #abnormalprogramming

Assembly interpreter inside of TypeScript's type system

Автору пришлось повысить лимиты внутри исходников компилятора Typescript, чтобы это заработало и не падало из-за слишком глубокого инстанцирования.

(thanks @randomstuffilike)
🔥3😁1🥴1
Forwarded from Defy
if (Math.random() >= 0.5) print(chooseRandomWarning())
Forwarded from Alexander
Блог*
if (Math.random() >= 0.5) print(chooseRandomWarning())
Похожим образом работает борроу чекер по мнению неосиливших Rust
😁24🤣1
😁6
Блог*
А для того, чтобы оно всё-таки работало, нужно, чтобы реализовали impl Fn() -> impl Trait in return position (привет, Вафель) и, желательно, синтаксис для явного написания замыкания с полиморфизмом высшего ранга. И то, кстати, не факт, что сработает, поскольку…
#prog #rust #rustlib

Ну а пока синтаксис для явного написания замыканий с полиморфизмом высшего ранга отсутствует, можно использовать 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
}
};
Пачка небольших приятных изменений для #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. 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
👍3🔥1