Αλεχ
мне надо match foo { New => true, _ => false }
Αλεχ
так что да, руками
Sergey
Vladimir
Но я не помню
Anton
Маjко
Тож не понял
Anton
@LooMaclin старик чо происходит
Loo
Cat
Маjко
Anton
Anton
Αλεχ
Есть способ записать строку в файл кроме как собрать сначала строку в Vec<u8>?
Anton
Anton
ну вообще да
Anton
ну еще макросы есть, но в сущности одно и то же делают
Αλεχ
Αλεχ
жалко(
Anton
а что ты вообще хотел то)
Anton
ты же байтики записываешь по факту
-__-
Αλεχ
Я уже нашел, что serde умеет сразу в to_writer
Αλεχ
ваще отлично
Αλεχ
и еще вопрос на засыпку
Αλεχ
fn load_images(&self) -> Vec<Image<T>> {
let entries = fs::read_dir(&self.path).unwrap();
entries.filter_map(|entry| entry.as_ref().ok()).map(|entry| {
let reader = File::open(entry.path()).unwrap();
let result: Image<T> = serde_json::from_reader(reader).unwrap();
result
}).collect()
}
Αλεχ
error[E0597]: `entry` does not live long enough
--> src\lib.rs:138:36
|
138 | entries.filter_map(|entry| entry.as_ref().ok()).map(|entry| {
| ^^^^^ - `entry` dropped here while still borrowed
| |
| borrowed value does not live long enough
...
142 | }).collect()
| - borrowed value needs to live until here
Αλεχ
я могу попробовать сделать map сразу на option'е
Αλεχ
но хотелось бы все-таки чуть помеьнше портянки
Αλεχ
можно в filter_map.map это провернуть?
Αλεχ
ваще не понимаю, у меня в другом проекте такой же код работает
Αλεχ
fn get_opencv_lib_path<'a, T: Iterator<Item = &'a io::Result<fs::DirEntry>>>(
files: T,
name: &str,
) -> Result<String, Box<Error>> {
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")
});
Αλεχ
вот этот код работает
Αλεχ
а код выше -почему-то нет
Anton
Кстати
Anton
Если у кого местных есть хорошие гайды или рекомендации по работе с парсерами и например nom чтобы понять нормально принципы работы и тд - был бы признателен
Anton
уже разобрался даже с злоебучими процедурными макросами
Anton
но с nom нихрена
Anton
по идее частично подходы чисто на глазок вроде бы похожие в чем то
Anton
но выдавить из себя как работать с этим не могу
Anton
агась
Anton
Со статьей про даты более менее чуть начал уже вникать
Anton
но опять же простой кейс в котором у меня есть некий блок имени, есть замыкание и внутри него некий список из описанных вхождений - все еще никак не могу
Anton
по идее так для большей части всего есть макросы хелперы какбы
Anton
но я даже не знаю как бы подступится нормально
Anton
тут такая фигня наверное что надо сначала хоть базово понять как работает и курится, и потом оно само пойдет легко уже
Anton
но сейчас даже основу понять не могу
Anton
ибо из парсинга чтото около темы я умею только в обычные регэкспы, и даже для написания кастомных десереализаторов юзал регэкспы, но это как то слишком грязно и неэффективно, особенно с учетом того что регэкспами все не покроешь(
Anton
я обычно вопросы в джерке задаю по техническому, но думаю тут так то по идее народу больше, так что подумал что актуальнее техническое задавать тут, а в джерке только словесно всех хуями крыть)
Судзумия
Сижу тут два года, а шрамко всё там же
Anton
պլհկ
На дне
Loo
Αλεχ
К слову про генераторы лодочник ответил
Αλεχ
// generator
fn foo() -> T yields Y
// generator that implements Iterator
fn foo() yields Y
// async generator
async fn foo() -> T yields Y
// async generator that implements Stream
async fn foo() yields Y
Αλεχ
так что мб завезут удобные
Αλεχ
второй случай
Berkus
ыаыаыва
Berkus
синтаксис день ото дня лучше и пронзительнее
Berkus
скоро public static async void main
Αλεχ
да нет, как раз все понятон
Αλεχ
Как правильно писать структуру, которая отвечает за асинхронное сетевое IO?
Αλεχ
я хотел бы реактор и все прочее спрятать за интерфейсом, и показывать наружу только футуры
Αλεχ
только я так понимаю, реактор должен быть на клиентской стороне
Αλεχ
ибо футуры сами по себе не исполняются..
պլհկ
Зачем тебе свой реактор?
Αλεχ
ну я привык к самоисполняющимся таскам, которые запускаются в момент создания
Αλεχ
и надо просто подождать результат
Kerrigan
зачем тебе асинхронность тогда вообще?
Αλεχ
Αλεχ
вот к этому и не привык. Но надо
Kerrigan
или это конкретный случай
Αλεχ
нет
Αλεχ
просто в тех же шарпиках ты возвращаешь Task<Foo>
Αλεχ
и тебе ен надо знать про среду исполнения этой таски
Αλεχ
можешь просто написать myFoo().Result
Αλεχ
и синхронно дождаться