Маjко
Поясни задачу
Adam
as_ref() добавь
Маjко
entry.as_ref().ok()
Может ему надо весь итератор сохранить
Loo
https://play.rust-lang.org/?gist=e85153f1daf5f91f233c453aacec6e86&version=stable&mode=debug
Αλεχ
entry.as_ref().ok()
во, пасибо
Αλεχ
Поясни задачу
хочу из итератора по файлам найти файл по имени
Αλεχ
fn get_file<'a, T: Iterator<Item = &'a std::io::Result<std::fs::DirEntry>>>(files: T, name: &str) -> Result<String, BuildError> { let opencv_world_entry = files.filter_map(|entry| entry.as_ref().ok()).find(|entry| { let file_name = entry.file_name().to_string_lossy().into_owned(); (file_name.starts_with(&format!("opencv_{}", name)) || file_name.starts_with(&format!("libopencv_{}", name))) && !file_name.ends_with("d.lib") }); let lib = opencv_world_entry.ok_or_else( || BuildError {details: format!("Cannot find opencv_{} file in provided %OPENCV_LIB% directory", name)})?; let lib = lib.file_name(); let lib = lib.into_string().unwrap(); // we expect filename to be something like 'open_world340.lib' or // 'open_world.340.dll.a', so we just consider everything after the // version number is an extension let lib_without_extension = lib.trim_right_matches(|c: char| !c.is_numeric()); Ok(lib_without_extension.into()) }
ㅤ
https://play.rust-lang.org/?gist=744c8bbe3ff453dd0f71dd5e7a7c780a&version=stable&mode=debug это идиоматично вместо return ошибки делать ? на ней с той же целью?
Loo
https://play.rust-lang.org/?gist=744c8bbe3ff453dd0f71dd5e7a7c780a&version=stable&mode=debug это идиоматично вместо return ошибки делать ? на ней с той же целью?
честно говоря - хз. думаю нет. если это ирли ретурн какой то поиск по ключевому слову будет проще
Loo
потому что поиск по ? найдёт и кучу других мест где уже не ирли ретурн
Evgεny
Закажи и тогда будет
а кто организатор, организаторы обычно заказывают или договариваются, чтобы завезли
Evgεny
или у жидбрейнс есть мастерплан по взращиванию раст-программистов на пицце
Evgεny
а я и не против
ㅤ
Тоже так думаю, не знал, что вопросительный знак над ошибкой возвращает её, поставлю там ретурны
Αλεχ
еще вопрос
Αλεχ
struct Struct<'a> { x: &'a str } trait Trait { fn set<'a>(&mut self, value: &'a str); }
Αλεχ
как заимплементить Trait для Struct
Αλεχ
чтобы лайфтеймы совпадали?
Αλεχ
https://play.rust-lang.org/?gist=b1155254caf933d76e6d24f5711af99e&version=stable&mode=debug
Денис
https://play.rust-lang.org/?gist=040fa56c0c5d248a4e5d94e26f57ad0f&version=stable&mode=debug
Αλεχ
могут быть другие методы без лайтайма
Αλεχ
https://play.rust-lang.org/?gist=040fa56c0c5d248a4e5d94e26f57ad0f&version=stable&mode=debug
https://play.rust-lang.org/?gist=4f5ce285936277e4b83dee37c2a0f6c1&version=stable&mode=debug
Денис
https://play.rust-lang.org/?gist=4f5ce285936277e4b83dee37c2a0f6c1&version=stable&mode=debug
https://play.rust-lang.org/?gist=f998692eeb5a553f10f67a5028cb4381&version=stable&mode=debug
Αλεχ
А если нет доступа к трейту?
Αλεχ
есть чужой крейт где есть Trait и AnotherStruct
Αλεχ
а у меня только Struct<'a>
Αλεχ
и я хочу его реализовать
Αλεχ
всё, вилы?
Αλεχ
что там внутри не особо важно. Вопрос про сигнатуры
-__-
Никак не заимплементить, иначе можно было бы в Struct<'static> засунуть что-нибудь с локальным временем жизни.
Αλεχ
да хрень это
Αλεχ
ты мог бы указать что 'b: 'a и все
-__-
Где указать? Трейт не накладывает ограничений на лайфтайм.
Αλεχ
есть трейт, у которого есть метод с лайтаймом
Αλεχ
есть структура с некоторым лайфтаймом
Αλεχ
я хчоу реализовать этот трейт, связав эти лайфтаймы
Αλεχ
что 'a = 'b
Αλεχ
оно ничего не ломает
-__-
Ну в том-то и дело, что в структуре "некоторый" лайфтайм, а в трейте любой.
vddms
Rust ета игра?
Αλεχ
ну так
Αλεχ
существование частный случай универсальности
-__-
Те, кто будут использовать T: Trait, могут какой угодно лайфтайм засовывать в set
John
Закажи и тогда будет
У гоферов даже пиво наливают. Шах и мат, как говорится.
Nikita
У гоферов даже пиво наливают. Шах и мат, как говорится.
игрушечному языку - игрушечные митапы
Berkus
митапы с игрушками
Αλεχ
А можно сделать #[cfg(crate_exist = "mycrate")] fn my_fn(_: mycrate::Something) {}?
պլհկ
че за crate_exist?
պլհկ
#[cfg(feature = pook)] extern crate pook; #[cfg(feature = pook)] fn my_fn(_: pook::Perd) ?
Adam
#[cfg(feature = "mycrate")]
Αλεχ
feature это не обзяательно фича
Αλεχ
но и факт наличие крейта?
Berkus
нет, но крейт может зависеть от фичи
Cat
Rust ета игра?
Игра с предсказуемым временем жизни
պլհկ
optional=true становятся фичами
պլհկ
https://github.com/rust-lang/cargo/issues/4911#issuecomment-355859791
Αλεχ
я просто думал, что фича, это только то, что можно в cargo.toml указать как feature
Αλεχ
а не сами крейты
Αλεχ
буду знать, спасибо
Αλεχ
error[E0658]: access to extern crates through prelude is experimental (see issue #44660) --> build.rs:6:26 | 6 | if let Ok(dir) = std::env::var("OPENCV_DIR") { | ^^^ | = help: add #![feature(extern_prelude)] to the crate attributes to enable
Αλεχ
шта?
Αλεχ
а, понял, надо :: в начале похоуд
კაცი
> see issue #44660
պլհկ
https://crates.rs/
Berkus
ну ничоси
Αλεχ
чет зашел - 90ми повеяло
Αλεχ
еще лет 5 и там начнут флеш-баннеры вылетать
Berkus
90-е это когда фон тайловой картинкой и шрифт комик санс
Αλεχ
нет
Αλεχ
шрифты это уже после
Αλεχ
МС в 1994
Ignat
K P A C U B O
պլհկ
Просто цвет не модный