Size: a a a

2020 March 06

EG

Emmanuel Goldstein in rust_offtopic
Макросу нельзя задать требования к входным параметрам, потому что это чуть-чуть облагороженная текстовая подстановка. Макросы не знают о типах.
источник

G

Gymmasssorla in rust_offtopic
Emmanuel Goldstein
Например, компилятор не указывает на строчку, на которой произошла ошибка в #[tokio::main]
+

Я даже в README teloxide написал как это обойти
источник

EG

Emmanuel Goldstein in rust_offtopic
Это, кстати, необязательно должно быть так — в Nim есть типизированные макросы.
источник

(

( in rust_offtopic
polunin.ai
Ну конкретно я код не генерировал. Но в проекте один раз заюзали кодген, и вроде норм было, только подправить немного надо было
у нас вот на проекте сгенерированного кода больше, чем нашего собственного, и очень часто это больно
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
это большое отличие от наколеночных go generate
Наколеночный го генерейт ты можешь исправить спокойно пару мест
Если же в макросах, то там пиздец страшно что-то менять
А если юзаешь либу, то в принципе невозможно
источник

AZ

Alex Zhukovsky in rust_offtopic
Emmanuel Goldstein
Да, но это всё ещё кодген с кучей кодгеновых недостатков.
никто и не говорит что макросы нужно использовать часто. Но иногда без них никуда
источник

AZ

Alex Zhukovsky in rust_offtopic
Emmanuel Goldstein
Да, но это всё ещё кодген с кучей кодгеновых недостатков.
https://github.com/Pzixel/haskell-operden/blob/master/src/Persistence.hs#L30 - вот как бы даже в хашкелле никуда без макросов
источник

EG

Emmanuel Goldstein in rust_offtopic
Alex Zhukovsky
никто и не говорит что макросы нужно использовать часто. Но иногда без них никуда
Макросы приходится использовать часто, потому что без них в Rust жить нельзя вообще.
источник

p

polunin.ai in rust_offtopic
Мне вот serde нужно было сделать
enum Foo {
 Bar,
 Baz,
 Unknown(String),
}
Сказали, что так сделать невозможно, и единственный вариант оборачивать в ещё один энум
источник

p

polunin.ai in rust_offtopic
С обычным кодгеном можно было бы подправить чуть десериализатор и норм
источник

AZ

Alex Zhukovsky in rust_offtopic
Emmanuel Goldstein
Макросы приходится использовать часто, потому что без них в Rust жить нельзя вообще.
только функции с вараргами по сути
источник

p

polunin.ai in rust_offtopic
Emmanuel Goldstein
Макросы приходится использовать часто, потому что без них в Rust жить нельзя вообще.
Смотря что пишешь
источник

AZ

Alex Zhukovsky in rust_offtopic
а все либы переходят с макросов на нормальную архитектуру, посмотри на ном тот же
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
а все либы переходят с макросов на нормальную архитектуру, посмотри на ном тот же
serde не перенесешь
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
serde не перенесешь
ни разу не юзал сердовских макросов
источник

EG

Emmanuel Goldstein in rust_offtopic
1. Имплементации трейтов для нескольких типов
2. Дерайвы — есть в буквально каждой программе
Как минимум
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
ни разу не юзал сердовских макросов
#[derive(Setialize)] не писал?
источник

AZ

Alex Zhukovsky in rust_offtopic
Emmanuel Goldstein
1. Имплементации трейтов для нескольких типов
2. Дерайвы — есть в буквально каждой программе
Как минимум
ну пиши без макросов, кто запрещает
источник

DF

Dollar Føølish in rust_offtopic
А лучше напиши свой кодген
источник

EG

Emmanuel Goldstein in rust_offtopic
Alex Zhukovsky
ну пиши без макросов, кто запрещает
Без макросов писать невозможно.
источник