Tuntz
хотя по опыту скажу, что если автор не может положить архитектуру на Future/Stream/Sink или async-await, то проблема в дизайне
Anton
так то да, просто тред был к тому что секаса в расте больше
Anton
как впрочем и гарантий
Anton
хотя основа очень простая и удобная
Anton
(это я про limn)
Anton
простенький и понятный ивентлуп
Anton
я пока больше задрачиваюсь на тему того как потом отлаживать, написание компонентов, роуты и дизайн
Anton
правда меня пока по работе ебут жестко, так что на это времени пока не особо(
Bugworm
https://maikklein.github.io/rlsl-progress-report/
Нави
Всю ночь сидел, пытался парсинг файла в структуру вынести из main в отдельную функцию, для удобства модульности, так ни с чем и лёг спать
Нави
Это говорит о том, на моём примере, как человек привык к неумению быть в рамках правил, и как тяжко вникать, что внутри рамок тоже есть жизнь)
Маjко
Откуда такой вывод про рамки, лол? Непривычная парадигма — сразу рамки?)
Нави
проблемы с борроучекером?
Проблема с борьбой компилятора, всё хочет, что бы я по его правилам играл, не научился ещё правильно описывать структуры, что бы компилятор съедал и неподавился
Нави
А до того был опыт с компилятором какого языка?
До начала использования структуры все гладко шло. Ну конечно раньше по началу были трения с более простыми вещами. До раста более менее серьёзных програм в компилируемых языках дел не имел, дружил с вселюбящими перилами и яваскриптами)
Alexey
Переход с одного с дианамики на статику (ну и обратно) это та еще боль. Удачи :-)
Нави
Перилами - перлами!!
Нави
Щас сяду, буду добивать структуры, что бы послушными стали)
Рома
где можно прочитать про трейты более подробно?
доня.
https://doc.rust-lang.org/book/first-edition/traits.html https://doc.rust-lang.org/book/second-edition/ch19-03-advanced-traits.html
Нави
Меня посетило озарение! В расте есть какй либо механизм описания функции, наподобие констант const, где по факту константа встраивается в каждое место, где используется, ?
doc
Дефолтное значение вместо ошибки чтоль?
Нави
походу дело я наверно говорю о макросах
Alexey
компилятор много чего заинлайнить может
LexsZero
на K
Alexander
А почему не на J?
В основном на K конечно.
Alexander
Вопрос: сделал range = 1..10, потом несколько слайсов &a[range] &b[range], но оказывается оно владение забирает, везде клон писать? А может какой-то более нормальный метод есть?
Нави
struct Cfg<'a> { ... } fn configuration() -> Cfg { вот на чём затык получаю: error[E0106]: missing lifetime specifier
LexsZero
а зачем там вообще указывать лайфтайм?
Нави
fn configuration<'a>() -> Cfg<'a> Не?
пробовал: error[E0261]: use of undeclared lifetime name 'a —> src/main.rs:34:27 | 34 | fn configuration() -> Cfg<'a> { | ^^ undeclared lifetime
Нави
а нет, стоп щас
Нави
error: expected identifier, found < —> src/main.rs:34:4 | 34 | fn <'a> configuration() -> Cfg<'a> { | ^ error: aborting due to previous error
պլհկ
Лайфтаймы не берутся из воздуха (кроме статик), если нет в аргументах, то и в результате не может быть
պլհկ
struct Cfg покажи, зачем там лайфтайм?
պլհկ
Но в аргументах функции его нет
Нави
Сорь Вроде так
что то сдвинулось с места) щас, там груду новых руганий разберу...
պլհկ
str этот откуда берётся?
Нави
str этот откуда берётся?
читается файл, и разбирается по значениям, есть и числа и строки, и вектор строк даже. Сначала по отдельным независимым переменным записывал, теперь в структуру организую
պլհկ
Ты все это внутри функции configuration() делаешь?
Нави
Ты все это внутри функции configuration() делаешь?
да, изначально внутри main всё было, но решил себе усложнить ))) в функцию вынести
Нави
в майне работает
պլհկ
Ну есть простое правило: все что внутри функции остаётся внутри функции)) Ты передаешь ссылку наружу на данные которые на выходе из функции будут невалидны, и компилятор этого не позволит.
Нави
https://play.rust-lang.org/?gist=4ea2feb2a725121b7b62b183d95d5847&version=stable
Нави
error[E0597]: text does not live long enough
Нави
не могу подружить теперь string с временем жизни 'a
Маjко
https://play.rust-lang.org/?gist=4ea2feb2a725121b7b62b183d95d5847&version=stable
К чему этот лайфтайм у тебя привязан? Ты пытаешься вернуть сейчас ссылку на данные со стека функции, ссылку на строку, которая будет уничтожена при выходе из ф-и.
Маjко
В этом случае у тебя есть String, его и возвращай
Маjко
https://t.me/rust_beginners_ru
Alexander
А лайфтаймы что-то меняют или это просто чтобы проверка проходила?
Нави
В этом случае у тебя есть String, его и возвращай
для упрощения так написал. На самом деле text - читается из файла, а потом из текста берутся множество строчек в str, и комплектуются в структуру. Тогда в структуре, вместо &'a str возвращать string ?
Маjко
https://doc.rust-lang.org/book/second-edition/ch19-02-advanced-lifetimes.html
Нави
к стати не ругается только на это (это внутри создания структцры): pause: std::time::Duration::from_secs(u64::from_str(text.split("sec=").last().unwrap().split(";").next().unwrap()).ok().expect("ОШИБКА!!! - Неправильное значение параметра периода опросов!")), а на всё остальное ругаетсяя типа этого: message: text.split("message=").last().unwrap().split(";").next().unwrap(),
Нави
значит понимаю, что в преобразовании строки в число, строка потом отпадает, и поэтому неругается на строку
Нави
значит есть какие то возможности для отстального, отвязать строку text от возвращаемых результатов
պլհկ
Возвращай String, зачем тебе str?
պլհկ
Тем временем https://vorner.github.io/corona-04.html
Нави
в коненом итоге отказался выводить создание структуры с &str в отдельную функцию, пользы это не прибавило бы. А string нехочу, потому, что каждый раз тогда пришлось бы писать .as_str() . Саму структуру в функцию научился передавать а = f(&Cfg); где Cfg<'a> - структура. А в функции уже: fn configuration<'a😠cfg: &Cfg<'a>) { println!("{}", cfg.message); }
Нави
на этом закрыл тему структуры в этой программе, когда ни будь придётся больше узнать)
Маjко
&string == string.as_str() Dereference rules
Нави
шо?
Маjко
А, хотя
Маjко
ты убил меня!)
Читай доку :) Это написано в главе про строки
Нави
Читай доку :) Это написано в главе про строки
ну да, слишком просто, что бы обратить внимание на это)