Alex
а я думал все спят, один я такой неудачник.
Судзумия
Или удачник, раз не нужно никуда :)
Anton
Да, пока перевожу небольшие проекты до 5к строк кода, причесывать буду по мере накопления опыта, lifetime непревычен
Alex
Или удачник, раз не нужно никуда :)
надо работать с утра. Ток на работу ехать не надо, вот и все плюсы.
Alex
а не ложусь потому что все еще работаю
Alex
Alex
Anton
замыкания предпочтительней
Маjко
Само собой, но не всегда это возможно
Anton
Раза в 4 компактней стало
Маjко
А это работает?
Маjко
Если ты сделал так, как я кинул выше
Anton
Да работает
Anton
Some(g) => flight.gate = if g == "GATE" { String::new() } else { g }
Anton
Тернарная не наглядная
Маjко
Маjко
Anton
xml::find_first(&f, "Flight").text .and_then(|c| Some(flight.code = c)); xml::find_first(&f, "DepartureDate").text .and_then(|d| Some(flight.date = NaiveDate::parse_from_str(&d, "%Y-%m-%d").unwrap())); xml::find_first(&f, "Destination").text .and_then(|d| Some(flight.dst_airport_iata = d)); xml::find_first(&f, "AircraftType").text .and_then(|t| Some(flight.aircraft_type = t)); xml::find_first(&f, "Status").text .and_then(|s| Some(flight.status = map_status(&s))); xml::find_first(&f, "DepartureTime").text .and_then(|t| Some(flight.std = NaiveTime::parse_from_str(&t, "%I:%M%p").unwrap())); xml::find_first(&f, "DepartureGate").text .and_then(|g| Some(flight.gate = if g == "GATE" { String::new() } else { g }));
Маjко
А, не
Anton
let yes = String::from("Y"); let btp_bound = match session.data.get("BTP_BOUND") { Some(v) if v == &yes => true, _ => false, }; // D auto btpBound = session.data.get("BTP_BOUND", "") == "Y";
Anton
верхний кусок можно сделать как в D?
Anton
ну или просто читабельней
Anton
session.data HashMap<String, String>
Маjко
Как ты строку сравниваешь с bool?
Маjко
А, распарсил
Маjко
Зачем тебе там owned String
Маjко
Ну можно по идее сделать map на том Option, который ты получаешь из HM
Маjко
В нем произвести сравнение
Маjко
И после unwrap_or(false)
Safort
Ещё одна GUI либа на основе WebRenderer, как я понял. https://github.com/christolliday/limn
Loo
А ты из какой компании?
123
@c_vld привет, а можешь объяснить, какое правило распространяется на то, что я не могу передав неявно в closure мутабельную переменную, вызвать ее вновь после? scope моей closur`ы перехватывает владение и уничтожает переменную?
Vladimir
Скорее всего то, что скоп твоей кложуры ты не ограничиваешь явно
Vladimir
т.е. если ты сделаешь как-то так let mut vec = vec![]; { let ref mut borrow_vec = vec; func(|| borrow_vec.push(x)); } println!("{}", vec.len()); то будет работать
Safort
Ещё одна? А есть другие?
Не так выразился. Имелось в виду ещё одна библиотека и она на веб рендерере.
123
т.е. если ты сделаешь как-то так let mut vec = vec![]; { let ref mut borrow_vec = vec; func(|| borrow_vec.push(x)); } println!("{}", vec.len()); то будет работать
сделал как-то так - не работает. Попробовал все варианты, тупо перебором, ни один не сработал. Если юзаю move - получаю 'used after move', если как вы, ребята, рекомендовали, то получаю ошибку о том, что происходит mutable borrowing, а уже ниже, когда снова пытаюсь использовать, пишет о том, что она уже mutable borrowed. В чем суть, не пойму. С точки зрения компилятора правильно вообще то, что я пытаюсь сделать?
Loo
скинь на плэйграунд поможем
Anton
А ты из какой компании?
Одна такая маленькая компания, два с половиной говнокодера)
Anton
Правда линуксоиды, а есть хто в винде хорошо шарит?
123
Вот ссылка: https://play.rust-lang.org/?gist=0ce975af30e829e3f8daeb5c5623cf2f&version=nightly
123
поправил, забыл косяк убрать, еще раз перейдите если кто-то уже вдруг успел
Anton
ясно
Zamar.aero
Anton
Правда линуксоиды, а есть хто в винде хорошо шарит?
Хотим на аутсорс один проект отдать связыный с виндовыми дровами
Евгений
@blahblahabl, чо-то ты перемедрил с ссылками на стринги. https://play.rust-lang.org/?gist=ed8e6091dd2173b276d28fd8d9815305&version=undefined
123
мне тут так советовали, я и сделал. господи, да я уже хоть на что согласен, лишь бы заработало, хотя конечно разобраться бы тоже стоило
Евгений
Я тебе скинул линк на рабочее
Cuno
https://play.rust-lang.org/?gist=97003f84e8bd260f56cc8b27d42c0d46 Можно же "по лесенке" прокидывать.
Anton
Зачем тебе там owned String
let yes = String::from("Y"); ? Там много сравнений с "Y" - экономия на спичках У меня было два варианта как написать let yes = String::from("Y"); let city_bound = match session.data.get("CITY_BOUND") { Some(v) if v == &yes => true, _ => false, }; Или let city_bound = match session.data.get("CITY_BOUND") { Some(v) if v.as_ref() as &str == "Y" => true, _ => false, };
Anonymous
and_then + is_some?
Anton
Ну можно по идее сделать map на том Option, который ты получаешь из HM
https://play.rust-lang.org/?gist=6abd528581b16d5d4e6b7bbc374d611d&version=stable
Anton
Хотелось чтобы было читабелььно как в Д auto btpBound = session.data.get("BTP_BOUND", "") == "Y"; У хешмапа не нашел метода get с default параметром, потому такие извраты
Anton
хотя можно было обернуть, чет я тупанул =)
պլհկ
get().unwrap_or(“whatever”)
Anton
Точно
Anton
Надо на ночь перечитывать Option & Result
123
@elemir90 неа, делал так с самого начала, ошибка та же
Евгений
@elemir90 неа, делал так с самого начала, ошибка та же
В смысле та же? Finished dev [unoptimized + debuginfo] target(s) in 7.3 secs
Евгений
Ты точно мой код скопировал? Я лесенку сделал
123
все, вижу
123
спасибо
123
@elemir90 можешь объяснить, почему требовалось вынести целиком все в отдельный scope?
Евгений
@elemir90 можешь объяснить, почему требовалось вынести целиком все в отдельный scope?
Потому что на 27'ой строчке у тебя cookie у тебя присваивается кусочку содержимого res, который в этом скоупе мутабельный. Можно изменить res и поменяется реальное содержимое cookie Тебе нужно его изолировать от немутабельного использования куки
Евгений
Если тебе дату нужно использовать, то вместо let data = core.run(download_login_page).unwrap(); оставь просто core.run(download_login_page).unwrap() , а let data = напиши перед этим блоком
123
не совсем ясно насчет изолированности. я думал, что изоляция уже есть, а получается, что клазура находилась в том же скоупе, что и принтлайн?
Светомеч
Почему раст и го постоянно сравнивают? Поюзал оба языка, и мне кажется, у них довольно четкие области применения, лишь кое где чуть пересекающиеся
Anton
Go форсит гугль, потому его сравнивают со всем попало
Anton
По мне так раст, это допиленый го
Karey
и что это за области применения?
Системные утилиты. Всякие Docker, k8s и прочее
Karey
По идее это должна быть ниша Rust
Anonymous
Системные утилиты. Всякие Docker, k8s и прочее
го не сделан для них, это объективно DSL для веб бекендов
Karey
И про "допиленный" Go - крайне сомнительное утверждение