Size: a a a

Rust — русскоговорящее сообществo

2020 November 23

YT

Yauheni Tsiarokhin in Rust — русскоговорящее сообществo
добрый день
подскажите пожалуйста с варпом

нужно сгенерить path апишки из строки например 'abc/a/b/c'

я пробую так
let mut segments: Vec<&str> = <Self as Method>::alias().split('/').collect();
let path_acc = warp::path::path(segments.remove(0));
let path = segments.iter().fold(path_acc, |acc, x| {
   path_acc.and(warp::path::path(x))
}).and(warp::path::end());


в ответ получаею ошибку
error[E0308]: mismatched types
 --> libs/agate-api-v4/src/traits/method.rs:51:13
  |
51 |             path_acc.and(warp::path::path(x))
  |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `Exact`, found struct `warp::filter::and::And`
  |
  = note: expected struct `Exact<warp::path::internal::Opaque<&str>>`
             found struct `warp::filter::and::And<Exact<warp::path::internal::Opaque<&str>>, Exact<warp::path::internal::Opaque<&&str>>>`
источник

YT

Yauheni Tsiarokhin in Rust — русскоговорящее сообществo
а все понял это изза того что я на каждой итерации фолда возвращаю And а аккумулятор не And изначаольно

как тогда собрать путь может кто подскажет?
источник

YT

Yauheni Tsiarokhin in Rust — русскоговорящее сообществo
кажется придется макрос писать
источник

RG

Random Guy in Rust — русскоговорящее сообществo
Есть ли какой-нибудь инструмент, чтобы из всех модулей выделять общие импорты и генерить prelude?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
prelude нельзя сгенерировать потому что кто знает какие у тебя будут часто использоваться методы а какие нет?
источник

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
Готового инструмента не встречал и, наверное, не хотел бы встретить)

Если крейтом больно пользоваться без прелюдии и *-импортов, то это красный флаг что, вероятно, апи нужно улучшать.
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Andrey @ozkriff Lesnikóv
Готового инструмента не встречал и, наверное, не хотел бы встретить)

Если крейтом больно пользоваться без прелюдии и *-импортов, то это красный флаг что, вероятно, апи нужно улучшать.
У std плохое апи?
источник

RG

Random Guy in Rust — русскоговорящее сообществo
Я чуть чуть про другое. Есть условно импорты, которые часто встречаются. FromStr, anyhow::Error итд. И хочется их на корневом уровне выделить в отдельный модуль, и потом просто импортировать
источник

YB

Yevhenii Babichenko in Rust — русскоговорящее сообществo
polunin.ai
У std плохое апи?
Отличное апи, не использую prelude ни один у себя в коде
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
Yevhenii Babichenko
Отличное апи, не использую prelude ни один у себя в коде
Импортируешь каждую мелочь?)
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Yevhenii Babichenko
Отличное апи, не использую prelude ни один у себя в коде
prelude std автоматически вставляется в каждый файл.
источник

YB

Yevhenii Babichenko in Rust — русскоговорящее сообществo
polunin.ai
prelude std автоматически вставляется в каждый файл.
Я про std::io::prelude и подобные
источник

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
polunin.ai
У std плохое апи?
Норм в целом, но речь про обычные крейты
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Yevhenii Babichenko
Я про std::io::prelude и подобные
А я про std::prelude
источник

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
Random Guy
Я чуть чуть про другое. Есть условно импорты, которые часто встречаются. FromStr, anyhow::Error итд. И хочется их на корневом уровне выделить в отдельный модуль, и потом просто импортировать
Греп use'ов и изучение глазами результата - самый хайтек, боюсь
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Random Guy
Я чуть чуть про другое. Есть условно импорты, которые часто встречаются. FromStr, anyhow::Error итд. И хочется их на корневом уровне выделить в отдельный модуль, и потом просто импортировать
Не стоит так делать
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Я бы вообще выносил импорты трейтов которые нужны для функций, в сами функции, в начало.
источник

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
polunin.ai
Я бы вообще выносил импорты трейтов которые нужны для функций, в сами функции, в начало.
Когда у меня появляется такое желание, я его интерпретирую как сигнал, что пора дробить модуль
источник

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
(кроме случаев с хитрыми #cfg)
источник

KR

Kai Ren in Rust — русскоговорящее сообществo
Иван Лещенко
Импортируешь каждую мелочь?)
Грамотно юзаем неймспейсы. Банальнейшый пример log::info!() вместо info!() и user::Id вместо UserId. Импорты не бухнут, читаемость не страдает.
источник