Size: a a a

2020 April 11

EG

Emmanuel Goldstein in rust_offtopic
polunin.ai
Ну хз как ном, Пег бы вывел ошибку expected [a-zA-Z0-9_] but found "~"
Хорошо, а такой пример?
(ident"string")
Как он отличит ситуацию «забыт пробел между идентификатором и строкой» от ситуации «кавычка недопустима внутри идентификатора»?
источник

p

polunin.ai in rust_offtopic
Emmanuel Goldstein
Хорошо, а такой пример?
(ident"string")
Как он отличит ситуацию «забыт пробел между идентификатором и строкой» от ситуации «кавычка недопустима внутри идентификатора»?
Смотря как правила опишешь опять же
источник

p

polunin.ai in rust_offtopic
Мне кажется ты где-то неясно описал
источник

p

polunin.ai in rust_offtopic
Вот и странную ошибку выводит ном
источник

EG

Emmanuel Goldstein in rust_offtopic
Ну вот и надо думать, как правила описывать не только для того, чтобы оно вообще распарсилось, но и чтобы ошибки были хорошие
источник

p

polunin.ai in rust_offtopic
Ну я описываю контекстно зависимо, у меня не может идти строка сразу после идентификатора, так как нет правила допускающего такое поведение
источник

EG

Emmanuel Goldstein in rust_offtopic
У меня парсится идентификатор ident, он распарсился до конца, вернул управление родителю (списку), список знает, что сразу после токена должен идти пробел, не находит его, жалуется на это
источник

EG

Emmanuel Goldstein in rust_offtopic
Но в случае (invalid~ident) он делает то же самое, и я не могу придумать способ, как ему объяснить, что это разные вещи
источник

EG

Emmanuel Goldstein in rust_offtopic
Поздравьте меня, я проебал нужный крейт для вывода ошибок
источник

EG

Emmanuel Goldstein in rust_offtopic
Ща пойду искать по зависимостям растовского компилятора
источник

EG

Emmanuel Goldstein in rust_offtopic
источник

EG

Emmanuel Goldstein in rust_offtopic
@p0lunin
Тривиально вот этого крейта достаточно, чтобы получить ошибки «как в rustc», ничего копировать не надо
источник

AZ

Alex Zhukovsky in rust_offtopic
а кто это
а про чистую архитектуру что скажете?
не читал
источник

EG

Emmanuel Goldstein in rust_offtopic
источник

EG

Emmanuel Goldstein in rust_offtopic
Почему Rust не может спаттернматчить тупл в тупл?
источник

В

Вафель in rust_offtopic
Потому что
let (a, b) = (1, 2);
источник

EG

Emmanuel Goldstein in rust_offtopic
Вафель
Потому что
let (a, b) = (1, 2);
Это только тривиальный случай
источник

EG

Emmanuel Goldstein in rust_offtopic
let mut a = 1;
let b;
(a, b) = (2, 3);
источник

В

Вафель in rust_offtopic
Паттерн матчинг только байндит переменные, присваивать он не умеет
источник

EG

Emmanuel Goldstein in rust_offtopic
Emmanuel Goldstein
let mut a = 1;
let b;
(a, b) = (2, 3);
Или ещё хуже
let mut a = 1;
while cond {
   let b;
   (a, b) = func();
   println!("{}", b);
}
источник