Vladimir
короче в том коде, зачем-то один регистр копируется в другой его инкриментит, проверяет результат, а дальше сбрасывает этот промежуточный регистр, и только потом увеличивает исходный
Vladimir
Что конкретно смущает?
Anton
А, пропустил
Anton
Так jb же только с rax работает, не?
Anton
Хотя не, вру
Anton
Короче inc не меняет флаг переноса, а jb как раз его проверяет. Это объясняет, почему там add 1
Anton
А вот зачем копируется непонятно)
Vladimir
это я понимаю
Алексей
уважаемые гуру, можно на секундочку привлечь ваше внимание к моему вопросу? вопрос в следующем, беру с crates.io штуку "reqwest", вставляю код из примера
let mut resp = reqwest::get("https://www.rust-lang.org")?;
assert!(resp.status().is_success());
let mut content = String::new();
resp.read_to_string(&mut content);
и он выдаёт ошибку
error[E0277]: the trait bound (): std::ops::Try is not satisfied
—> src/main.rs:36:20
Alex
Vlad
🎲
Добрый день. Пишу игрушечный интерпретатор в образовательных целях. И не могу придумать как обходить ast в несколько потоков. Может кто-нибудь поделиться идеей или дать ссылку?
big
А с какой целью вам нужно обходить ast в много потоков?
🎲
В этом нет смысла?
big
не совсем ) Зависит как раз от цели
🎲
Найти тип указанной переменной
big
шансы что это можно/нужно делать паралельно — уменьшаются
Vladimir
Скорее не нужно
Vladimir
А вообще аст если константный то легко обходится в несколько потоков, если нет - то дороже выйдет
Алексей
Маjко
@c_vld диссапрув твоему троллингу
Маjко
Ты б хоть про язык почитал, прежде чем к гоферам лезть
Маjко
Тоньше надо
Vladimir
Лол
Oleg
В каком чате? :)
Vladimir
Гофском
Маjко
@progo
Tuntz
коллеги, как (с помощью какой либы) проще всего в расте скачивать файлы?
Anonymous
Anonymous
мужик
Tuntz
у меня давно как го на работе, раст дома
Маjко
Маjко
Если асинхронность и прочее не нужны
Tuntz
нужно http, с канселляцией, по возможности прямо в файл; желательно асинхронно
Маjко
hyper
Tuntz
понял, спасибо 👍
Anonymous
でゲソ
сатана уменьшает им аргументы, лол
でゲソ
6.1232... смахивает на гравитационную постоянную
Anton
Есть варианты как красиво развернуть конструкции типа
cfg.get(&Yaml::from_str("scope"))
.unwrap()
.as_str()
.unwrap();
Anton
С обработкой ошибок
Anton
Вариант в лоб
match cfg.get(&Yaml::from_str("scope")) {
None => return Err(
format!("{}: Value 'scope' not defined", cfg_file)
),
Some(v) => {
match v.as_str() {
None => return Err(
format!("{}: Value of 'scope' is not String", cfg_file)
),
Some(scope) => config.scope = scope.into()
}
}
}
Хотелось бы что нить полаконичней
Anonymous
cfg.get(...)?.as_str()?;
Маjко
Не, там же опшналы
Маjко
Он их в ошибки преобразует
Маjко
У Option точно был API чтобы преобразовать None в нужную ошибку
Anonymous
ааа
Anton
нужно внятные текстовые ошибки лепить в Result
Anonymous
option.ok_or(error_value)
でゲソ
а разве вопрошалка не как элвис-оператор работает?
でゲソ
Anonymous
Anton
expect - выбрасывает трейс
でゲソ
почему?
Anton
Для конечного юзверя не гуд
でゲソ
и сообщение пишет
でゲソ
про трейс не в курсе был
Anton
Будет думать что отвалилось
Anonymous
Маjко
Такое
Anton
Макросы наше всио?
Маjко
Чем тебе ok_or не нравится?
Маjко
cfg.get(&Yaml::from_str("scope"))
.ok_or(NotFoundError)?
.as_str()
.ok_or(ParseError)?;
Anton
Мне кажется не читабельней
Anonymous
ват
Anonymous
как здесь макрокоманда поможет
Anton
Хотя
Anton
просто там спуск - и будет не вложенный а последователььный листинг
Anton
по дереву
Anton
root -> database -> pool -> pool_param
Loo
Эм
Маjко
Но имхо с ok_or всё очень даже читабельно
Маjко
И главное понятно где какие ошибки кидаются
Loo
error chain возьми, он умеет чейнить опшионалы с 0.11 рц 2
Маjко
Anton, сделай ошибки вариантами енама и юзай error_chain, кидать ошибки с строками — моветон
Маjко
Anonymous