Size: a a a

2020 November 23

k

kirill in Rust Beginners
Рик Огурчик
Или ты о чем?
Вроде в других языках это слово не используют. Вот и стало интересно, откуда логика
источник

С

Сергей in Rust Beginners
Я думаю, как-то связано с cargo, т.е. crate - это именно ящик для грузов
источник

BL

Blanche Lap in Rust Beginners
есть карго и оно возит крейты
источник

BL

Blanche Lap in Rust Beginners
и наступает карго-культ
источник

k

kirill in Rust Beginners
Понятно, назовем " Операция Ы" чтобы никто не догадался
источник

VB

Vlad Beskrovnyy in Rust Beginners
Интересно, что crate используется именно в расте (в языке, как ключевое слово и т.п.), а не в карго. В карго package и target (притом растовый crate в терминах карго - это target).
источник

VB

Vlad Beskrovnyy in Rust Beginners
Еще я спросил у Кладова, почему crate. Вот ответ
источник

VB

Vlad Beskrovnyy in Rust Beginners
Переслано от Aleksey Kladov
грейдон живёт в канаде
источник

VB

Vlad Beskrovnyy in Rust Beginners
Переслано от Aleksey Kladov
где-то на берегу океана
источник

VB

Vlad Beskrovnyy in Rust Beginners
Переслано от Aleksey Kladov
и любит долго ходить вдоль берега
источник

VB

Vlad Beskrovnyy in Rust Beginners
Переслано от Aleksey Kladov
И чот он как-то раз проходил мимо порта, и там были crates и он такой "опачки!"
источник

VB

Vlad Beskrovnyy in Rust Beginners
А слово cargo придумали использовать уже позже
источник

VB

Vlad Beskrovnyy in Rust Beginners
kirill
Приветы! Откуда взялось название крейт? Ни библиотека, ни пакет, ни модуль...
Еще возможное "логичное" объяснение (хотя оно явно тут не требуется). "библиотека" - это тип крейта. Крейт может быть библиотекой, а может и не быть. Термин "модуль" в расте уже используется (единица декомпозиции в пределах одного крейта). "пакет" - сущность уровня cargo, объединяет несколько крейтов (таргетов) (тесты, бенчмарки, примеры). Нужно было еще одно слово
источник

d

diabolo in Rust Beginners
Vlad Beskrovnyy
Еще я спросил у Кладова, почему crate. Вот ответ
Кладова? 😂 😂 😂 Он гнать умеет — это да, молодец)
источник

d

diabolo in Rust Beginners
мне всегда интересно что он курит, но это оффтоп, главное проекты хорошие)
источник

IB

Ilya Bogdanov in Rust Beginners
Кажется ты не задетектил шутку
источник

(L

(((Mike Lubinets))) in Rust Beginners
r/wooosh
источник

VB

Vlad Beskrovnyy in Rust Beginners
Вообще я не думаю, что это шутка
источник

А⚙

Антон ⚙️ in Rust Beginners
Vlad Beskrovnyy
Вообще я не думаю, что это шутка
Вот да
источник

AK

Andrej Kiselev in Rust Beginners
Всем доброго времени суток. Возник вопрос по оборачиванию ошибок, а именно создание кастомной ошибки, которая склеивает все остальные. У меня есть мой enum с кастомными ошибками:

#[derive(Debug, PartialEq)]
pub enum DaoError {
   DieselError(diesel::result::Error),
   DataError(DataError),
   ValidateError(ValidateError),
}

Есть функция, которая возвращает Result<String, DaoError> и она возвращает различные ошибки из enum DaoError:

fn f(..) -> Result<String, DaoError> {
   let v1 = make_query()?; // Возвращает Result(, diesel::result::Error);
   let v2 = validate()?; // Возвращает Result(, ValidateError);
   let v3 = find(); // Возвращает Option()

  v3.ok_or(DataError::NotFoundErr).map(|v| v.my_string)
}

Сначала компилятор ругался на то, что не может различные ошибки в DaoError, но затем я реализовал From trait для всех ошибок в DaoError. НО, почему-то в последней строчке он ругается на то, что возвращается Result<, DataError>, а ожидается Result<, DaoError>. Почему он не может сконвертировать DataError в DaoError как в предыдущих строчках?

Если написать:

v3.ok_or(DaoError::DataError(DataError::NotFoundErr)).map(|v| v.my_string)

То все работает, но это очень странно выглядит. Помогите, пожалуйста, с этой строчкой или дайте ссылку на статью, где решается похожая проблема.

Я читал еще, что можно не городить обертки над ошибками и использовать Box<error>, но там теряются типы ошибок, что(наверное) не очень хорошо...
источник