Loo
Слышал есть refind для uefi
Амир
Ребят, помогите)
https://gabdube.github.io/native-windows-gui/api/native_windows_gui/struct.Ui.html#method.get_mut
let change_text = app.get_mut::<AppId>(&NameInput);выдает
The key was not found in the ui
Berkus
Loo
Loo
что ты в конструктор типа передаёшь вместо Label - AppId
Амир
Почему-то в примере написано
ui.get_mut::<u32>(100)а у меня требует
error[E0308]: mismatched types
--> src\main.rs:126:50
|
126 | let change_text = app.get_mut::<u32>(100);
| ^^^ expected &AppId, found integral variable
|
= note: expected type `&AppId`
found type `{integer}`
Filipp
Давай мы вместо, того чтобы рыбу тебе дать, научим тебя рыбачить.
Filipp
Ты понимаешь что треугольные скобочки значат?
Filipp
Или ушёл уже?
Судзумия
Возможно, он уже умеет рыбу ловить
Судзумия
Теперь его надо научить, что делать с рыбой после того, как ты её выловил
Berkus
でゲソ
でゲソ
нет
でゲソ
кроме того что твой ноут умеет в гибернацию и граб тяжеловесное легаси говно
でゲソ
нифига не понимаю как работает чтение из файла
でゲソ
cargo test : 3 passed 0 failed
cargo test : 2 passed 1 failed
でゲソ
почему при повторном запуске теста он не осиливает считывать содержимое файла?
でゲソ
чтение https://github.com/non-descriptive/domi/blob/dev/src/parser.rs
тесты https://github.com/non-descriptive/domi/blob/dev/tests/test.rs
Berkus
でゲソ
по привычке
Berkus
тесты у тебя неправильно написаны
Berkus
они в любом порядке могут выполняться
Berkus
у каждого теста должен быть setup и teardown
Маjко
でゲソ
Berkus
годный пример?
test_read_from_file() {
// setup
create_file_to_read();
// test
assert read_file is ok
// teardown
delete_file_to_read()
}
Berkus
ну и вообще лучше без реальных файлов это тестировать
Berkus
на const memory для чтения и на обычных memory bufs для записи
Маjко
Для этого есть крейт tmpfile
Маjко
Всё как с файлами, но он юзает API ОС для создания временных файлов в памяти
Маjко
И чистит их после
でゲソ
то есть если я надумаю пилить приложение с конфигфайлом, то реальные файлы ненужны?
Berkus
https://github.com/berkus/carma/blob/rust/src/support/mesh.rs#L141
Маjко
でゲソ
но почему тем не менее прогон теста чтения фейлится на повторном чтении7
でゲソ
по завершении же вроде логично что все файловые дескрипторы закрыты
Berkus
ну дело явно не в дескрипторе
Berkus
какая ошибка то?
Маjко
Энивей, это твой выбор: как тестировать.
Тесты не выполняются последовательно, порядок недетерминирован. Ты должен перед каждым тестом создавать свой тестовый файл и после чистить за собой.
У тебя сначала запускается рид, потом райт тест
Маjко
Например
Маjко
И твои тесты превращаются в тыкву
Berkus
я ж это написал буквально 6 минут назад
Маjко
Я видел
でゲソ
でゲソ
Маjко
А еще они могут запускаться паралельно)
でゲソ
причем запускает параллельно только если файл непустой?
Маjко
create_file_with_data создает файл, так?
でゲソ
пишет в файл
Berkus
でゲソ
таки нет
でゲソ
если файл изначально пустой, то отрабатывает ок
Berkus
это perceived state
でゲソ
если файла изначально нет, то тоже ок
Маjко
Нет я вижу из кода, что он создает: https://github.com/non-descriptive/domi/blob/dev/src/parser.rs
File::create(path)
Обратимся к документации:
This function will create a file if it does not exist, and will truncate it if it does.
Berkus
попробуй разные имена файлов в этих двух тестах использовать
Маjко
Тест write транкейтит файл
Loo
Маjко
В это время read пытается читать пустой файл или не до конца записанный
Маjко
Делай тесты правильно.
Маjко
мдаа
Откуда такая привычка то пошла, интересно?
Loo
вот хз
Маjко
Си разве что на ум приходит
Маjко
Но сишники должны знать о поведении fopen с флагом create
でゲソ
есть контакт
Loo
https://doc.rust-lang.org/std/fs/struct.File.html
Маjко
Loo
первый абзац документации по File
でゲソ
таки значит параллельность тестов
Loo
последняя строка
Loo
Files are automatically closed when they go out of scope.
でゲソ
где гарантия что я вышел из скоупа?
でゲソ
а вообще да, это лишняя перестраховка
Маjко
でゲソ
да
Loo
Маjко
Понимание что такое скоп — твоя гарантия. Это не рокет сайенс, это синтаксический примитив практически