պլհկ
պլհկ
где твой бог теперь
Αλεχ
Αλεχ
че за костыли
Vladimir
Я тоже не понял х)
Маjко
պլհկ
https://doc.rust-lang.org/src/std/macros.rs.html#371-374
Маjко
Я чет уже не уверен
Vladimir
Мув семантика наверное
Vladimir
Костыль
պլհկ
пиздатый макрос да?
Маjко
drop мувает как функция?
Vladimir
Маjко
Тогда всё ок, я спутал с сигнатурой Drop:💧
Vladimir
Дроп это пустая функция
Маjко
Лелега блять)
Nikita
fn drop<T>(val: T) {}
Маjко
Vladimir
Если для трай нельзя сделать fn try<FnMut()->Y>(f:F)->Y{f()} то почему для троп сделали, хочу равноправия
Leonid 🦇
> I think it's massively overhyped. I don't have an inherent objection to the idea of a safer systems programming language, but one developed primarily by academics with no real job experience and apparently designed to appeal to webdevs who don't have much low-level experience anyway isn't exactly one that I want to succeed. The Rust Evangelism Strike Force annoys me as well.
Маjко
Маjко
let pook = try(|| {
let a = do_one(x)?;
let b = do_two(a)?;
Ok(b)
});
Vladimir
Ну окей
Vladimir
Для Кетч анвинда тоже ж завезут синтаксис?
Маjко
Надеюсь, нет
Маjко
А то на паниках начнут логику писать
Маjко
Как в джаве на эксепшнах
պլհկ
помню как 2 года назад все орали ВОПРОСИК НЕ НУЖЕН ЗАЧЕМ НАМ СИНТАКСИС МОЖЕМ И TRY! НАПИСАТЬ
պլհկ
сейчас уже try! не найдешь в коде
պլհկ
с try блоком будет то же самое, инфа сотка
Αλεχ
да понятно что ланг итем лучше макроса
Αλεχ
вопрос в том, стоит ли так писать
Αλεχ
или говный синтаксис - благо, которое радует глаз?
𝙽𝚒𝚌𝚔
Там ещё трансформеры как-то надо им будет уложить.
𝙽𝚒𝚌𝚔
(Когда except в async в IO)
Αλεχ
не факт что этосложнее
Αλεχ
они там вроде говорили, почему ду не очень
𝙽𝚒𝚌𝚔
они там вроде говорили, почему ду не очень
да, лодочник писал, что у них в итераторах конкретные типы, потому что зирокост. И это конфликтует с do-нотацией. Если бы они смогли обобщить итераторы, но сохранить зирокост, тогда бы у них получилось.
պլհկ
try в асинке так же работает как и везде
պլհկ
не понял в чем проблема
Loyd
При этом можно быть несогласным с заменой try!
Loyd
Раньше можно было хвастаться тем, что вот декать даже работа с ошибками через макросы, такие вот они развитые и всё такое.
Loyd
А теперь — try!, await! и т.д., всё в мусоор
պլհկ
await остался так-то
Loyd
Loyd
Vladimir
Жиза, раньше не плодили синтаксис, так как считали что лучше один обобщенный способ который позволяет делать нужную фичу, а потом его можно макросом обернуть
պլհկ
Ignat
нет бы for со скалы скопипастить
Vladimir
А сейчас на каждый кейс который часто юзают завозят синтаксис
Vladimir
Ignat
ну такая do-нотация, которая не пугает джавистов, потому что выглядит как for))
պլհկ
работа с ошибками как была хуевая, так и осталась
Vladimir
Loyd
не вижу тут повода для гордости, если цель не лиспоебство
Ну, возможность сменить имплементацию #[async] это довольно таки мощно. Скажем, хочешь ты, чтобы join(a, b) можно было херичить прямо в await!, допиливаешь форму let (a, b) = await!(a, b), хотя она первоначально не предполагалась
Loyd
А если у тебя await — keyword, то ты сосёшь
Vladimir
Loyd
И вынужден делать await join(a, b)
Vladimir
for a<1 to 5
պլհկ
напиши свой макрос
Ignat
ну разница-то в том, что to — метод, а не ключевое слово
պլհկ
await2!
Ignat
поэтому такой цикл — это на самом деле map рэнджа
Ignat
ну или foreach, в зависимости от тела
Loyd
Ну и получаешь неконсистентность с обычным await, который кейворд. Зачем, спрашивается?
պլհկ
1) но кейворда await нет
2) пусть нам @Psilon расскажет как плох авэйт там где он есть
Loyd
1) Пока нет. Он будет, просто не договорились о приоритете оператора
Αλεχ
2) авейт ваще заебись, жду не дождусь его в стейбле
պլհկ
պլհկ
нахуй такой await нужен спрашивается
պլհկ
и даже await a | b нельзя
պլհկ
это что вообще такое
պլհկ
придумал идею для стартапа
պլհկ
за имплементить + и | для фьюч
պլհկ
+ = join
| = select