Berkus
ну дроп так дроп, какая разница
Mike
Ivan
То есть смотрите, я мувлю объект b в функцию и он там умирает?
Vladimir
да, но это не точно
Vladimir
ведь в той функции его могут сохранить
Ivan
Допустим функция void
Filipp
https://doc.rust-lang.org/src/core/mem.rs.html#666
mem::drop выглядит вот так
Filipp
он просто вызывает Drop::drop
ivan
я че сказать-то хотел. стоило пару месяцев не писать на расте, как тут уже плагин к IDEA допилили до состояния "практически божественно"
Berkus
/// This function is not magic; it is literally defined as
///
/// pub fn drop<T>(_x: T) { }
///
/// Because `_x` is moved into the function, it is automatically dropped before
/// the function returns.
хех
Ivan
ахахахаха
Alex
надо глянуть как std::mem::forget работает
ivan
скиньте, плиз, картинку с описанием основных типов данных раста, таких как Box, Mutex, Rc, Arc, RwLock, и им подобные
ivan
там ещё про ownership что-то было
доня.
картинку не видел, но может пригодится: https://doc.rust-lang.org/book/first-edition/choosing-your-guarantees.html
Loo
ivan
Loo
идеально! спасибо
https://habrastorage.org/files/794/b0a/8af/794b0a8af6564418b897e0b2e5a6afa6.png
Loo
Anonymous
доня.
Loo
есть оригинал?
https://rufflewind.com/2017-02-15/rust-move-copy-borrow
Loo
https://habrahabr.ru/post/322140/
Berkus
очень годно, спасибо
ivan
вот эта штука спасла мой вечер:
https://docs.rs/persistent/0.3.0/persistent/
Anonymous
Berkus
if let Some(v) = vec.get_mut(index) { *v = new_value; } это идиоматично? варианта с vec[index] = new_value; нет?
Berkus
хмм, а в доке для вектора есть IndexMut
Loo
второе не идиоматично так как паникует при попытке обратиться к несуществующем индексу
Loo
если паника для тебя - нормальная ситуация тогда смело индексируйся. но обычно так не делают если хотят чтобы поток в котором происходит обращение жил дальше
Loo
в этом и прелесть .get и .get_mut - позволяют обработать ошибку
Berkus
ага, понял, спасибо
Berkus
с IndexMut оказалось надо было индекс кастовать к usize
Berkus
на u16 оно отказалось индексироваться, окей
Loo
всё верно. кастовать к usize в любом случае придётся при работе с вектором.
Мерль
[last news]
Rust for the web
Alex
Safort
Сначала на реддите Rust'а реклама Go, а теперь какой-то Huy-гофер пишет про Rust. Хм..
Амир
error[E0434]: can't capture dynamic environment in a fn item; use the || { ... } closure form instead
--> src\main.rs:78:41
|
78 | static first: &'static str = second;Что можно сделать?
Filipp
клонировать
Амир
Filipp
покажи код
Filipp
в кложуре second.clone() че-нибудь такое
Filipp
но это костыль если честно
Loo
Filipp
странно что фн думает, что 'static это dynamic
Filipp
здесь явно меньше информации чем надо
Loo
ну как меньше
Loo
мы же телепаты
Амир
Измучался уже весь, так как полный 0
Амир
https://gist.github.com/anonymous/82e7216dcd72f00f1f14896aec2eacaf
Пожалуйста, подскажите как можно изменить text="Your Name: "; на свою переменную, вычисленную в блоке fn main(){}
Пытаюсь создать мутабельную статическую переменную и изменить её значение через Unsafe, получаю "does not live long enough"...
Амир
Есть метод https://gabdube.github.io/native-windows-gui/api/native_windows_gui/struct.TextInput.html#method.set_text но я не знаю как его использовать
Амир
error[E0599]: no method named set_text found for type AppId in the current scope
--> src\main.rs:240:15
|
240 | NameInput.set_text("123");
| ^^^^^^^^
Амир
Хочу сейчас просто выставить статическую переменную
Filipp
в гисте, который ты прислал, нет кода, ошибку в котором ты прислал
Filipp
можешь текущий код, в котором ошибка вылазит прислать?
Filipp
вобщем проблема, как мне кажется, в том, как получить инпут из app, для этого надо прочитать доку
Loo
Loo
первое это получаешь ссылку на контрол из инстанса ui
Loo
второе
Loo
https://gabdube.github.io/native-windows-gui/api/native_windows_gui/struct.Label.html#method.set_text
Filipp
а как id получить? он в макросе присваивается как-то?
Filipp
да действительно в контролс передаются пары (ID, Template)
Filipp
ты его в макросе темплейта указываешь
Filipp
"NameInput"
Filipp
вместо Ui нужно написать его экземпляр, который в твоем гисте называется app
Filipp
если я правильно все понял
Амир
error[E0381]: use of possibly uninitialized variable: app
--> src\main.rs:122:5
|
122 | app.get_mut::<AppId>(&NameInput);
| ^^^ use of possibly uninitialized app
Filipp
надо либо внутри блока ок это делать либо выходить внутри блока err
Filipp
или после этого блока вообще, если fatal_message -> !
Амир
надо либо внутри блока ок это делать либо выходить внутри блока err
Прокатило, теперь надо изменить текст...
let mut change_text = app.get_mut::<AppId>(&NameInput);
change_text.set_text("124");пишет:
error[E0599]: no method named `set_text` found for type `std::result::Result<std::cell::RefMut<'_, std::boxed::Box<AppId>>, nwg::Error>` in the current scope
--> src\main.rs:127:25
|
127 | change_text.set_text("124");
| ^^^^^^^^
Loo
там же написано что тип Result
Filipp
начал бы лучше с книги
Filipp
и задачек на adventofcode.com
Filipp
ну ладно. прочитай хотя бы про резалт просто
Filipp
без него дальше никак точно
Filipp
https://doc.rust-lang.org/std/result/