Alex
а я думал все спят, один я такой неудачник.
Судзумия
Или удачник, раз не нужно никуда :)
Anton
Да, пока перевожу небольшие проекты до 5к строк кода, причесывать буду по мере накопления опыта, lifetime непревычен
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)
Vladimir
Safort
Ещё одна GUI либа на основе WebRenderer, как я понял.
https://github.com/christolliday/limn
Loo
А ты из какой компании?
Vladimir
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());
то будет работать
Евгений
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
сделал как-то так - не работает. Попробовал все варианты, тупо перебором, ни один не сработал. Если юзаю move - получаю 'used after move', если как вы, ребята, рекомендовали, то получаю ошибку о том, что происходит mutable borrowing, а уже ниже, когда снова пытаюсь использовать, пишет о том, что она уже mutable borrowed. В чем суть, не пойму. С точки зрения компилятора правильно вообще то, что я пытаюсь сделать?
что пыытаешься сделать? я пропустил твой код
Loo
скинь на плэйграунд поможем
Евгений
сделал как-то так - не работает. Попробовал все варианты, тупо перебором, ни один не сработал. Если юзаю move - получаю 'used after move', если как вы, ребята, рекомендовали, то получаю ошибку о том, что происходит mutable borrowing, а уже ниже, когда снова пытаюсь использовать, пишет о том, что она уже mutable borrowed. В чем суть, не пойму. С точки зрения компилятора правильно вообще то, что я пытаюсь сделать?
Скинь код на плейраст, ничего не понятно чо там у тебя происходит
Anton
Правда линуксоиды, а есть хто в винде хорошо шарит?
Loo
123
Вот ссылка: https://play.rust-lang.org/?gist=0ce975af30e829e3f8daeb5c5623cf2f&version=nightly
123
поправил, забыл косяк убрать, еще раз перейдите если кто-то уже вдруг успел
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
Хотелось чтобы было читабелььно как в Д
auto btpBound = session.data.get("BTP_BOUND", "") == "Y";
У хешмапа не нашел метода get с default параметром, потому такие извраты
Anton
хотя можно было обернуть, чет я тупанул =)
պլհկ
get().unwrap_or(“whatever”)
Anton
Точно
Anton
Надо на ночь перечитывать Option & Result
123
@elemir90 неа, делал так с самого начала, ошибка та же
Евгений
Ты точно мой код скопировал? Я лесенку сделал
123
все, вижу
123
спасибо
123
@elemir90 можешь объяснить, почему требовалось вынести целиком все в отдельный scope?
Евгений
Если тебе дату нужно использовать, то вместо
let data = core.run(download_login_page).unwrap();
оставь просто
core.run(download_login_page).unwrap()
, а let data = напиши перед этим блоком
123
не совсем ясно насчет изолированности. я думал, что изоляция уже есть, а получается, что клазура находилась в том же скоупе, что и принтлайн?
Светомеч
Почему раст и го постоянно сравнивают? Поюзал оба языка, и мне кажется, у них довольно четкие области применения, лишь кое где чуть пересекающиеся
Anton
Go форсит гугль, потому его сравнивают со всем попало
Loo
Anton
По мне так раст, это допиленый го
Anonymous
Karey
По идее это должна быть ниша Rust
Anonymous
Karey
И про "допиленный" Go - крайне сомнительное утверждение