Денис
Хотя с ретурном вроде не ансейф 🤔
да не должно бы. первая иммутабельная ссылка не живёт за пределами блока if let, так что дальше всё пучком должно быть
Денис
я надеялся, что nll порешает, но он почему-то не порешал :(
պլհկ
Ссылка сломается от пуша и привет
Денис
я беру ссылку после пуша
qthree
вот бы щас на оптимизацию понадеяться)
http://play.integer32.com/?gist=66cde68562dc4fb83a45bb0f0b1d3ed6&version=stable&mode=debug
Денис
ссылка иммутабельная, это не даст юзеру, держа её, вызвать на контейнере find_or_insert ещё раз
qthree
$ cargo bench Finished release [optimized] target(s) in 0.00s Running target/release/deps/bench_unsafe-66aa573ff5f344cb running 3 tests test test::test ... ignored test test::bench_safe ... bench: 307,205 ns/iter (+/- 29,120) test test::bench_unsafe ... bench: 310,256 ns/iter (+/- 31,531) test result: ok. 0 passed; 0 failed; 1 ignored; 2 measured; 0 filtered out
qthree
&self.data[n] быстрее чем unsafe { self.data.get_unchecked(n) } лол
Денис
мда
Денис
всем бенчам бенч
qthree
ну предложи другой
պլհկ
Ну компилятор видимо не вдупляет за ретурн 😞
Денис
Ну компилятор видимо не вдупляет за ретурн 😞
да даже если бы я там ретурн не делал, я же ссылку на пределы блока один фиг никак не вытаскиваю :(
Quet
в пределах погрешности, не удивлюсь если там на самом деле один и тот же код получается по факту
Денис
чот не могу на crates.io найти крейт, который бы решал эту задачу (find or push на векторе)
Денис
хотя наверное слишком редко встречается необходимость таковая
Cat
хотя наверное слишком редко встречается необходимость таковая
а тот же тупой вопрос: переписать вот это под себя не подойдёт? https://doc.rust-lang.org/std/collections/hash_map/enum.Entry.html
Cat
(я не знаю, просто предполагаю)
qthree
По меньшей мере забавно надеется что компилятор оптимизирует лапшу из итераторов, но не сможет оптимизировать два сравнения подряд
qthree
Да вот прошлый раз спрашивал кто то и я разбирал asm с комментариями
Cat
тут t.me/rustlang_ru/117815 — https://play.rust-lang.org/?gist=7526ce936125bbbd90edc2147c34d1b1&version=stable&mode=release
Alex
Привет всем, а где можно прочитать про разные кейсы использования модулей и тестирования? Или может кто сразу сможет подсказать: 1. Есть такая структура: $ tree ├── Cargo.lock ├── Cargo.toml ├── src │   ├── main.rs │   └── my_lib.rs └── tests └── test_lib.rs 2. my_lib.rs: pub struct MyStruct { pub id: i32 } 3. main.rs: mod my_lib; use my_lib::MyStruct; fn main() { let my_struct = MyStruct { id: 10 }; println!("Hello, {}", my_struct.id); } 4. Допустим, я хочу протестировать my_lib::MyStruct, как мне его заимпортить в тестах?
Денис
+ тебе не mod my_lib; надо делать, а extern crate my_lib;
Денис
то же самое можно и внутри tests/ делать
Денис
и не my_lib.rs называть, а lib.rs :)
Денис
и да, функциональные тесты применимы только к библиотекам :)
Alex
+ тебе не mod my_lib; надо делать, а extern crate my_lib;
а вот на это у меня ругается раст: cargo run Compiling modules v0.1.0 (file:///Users/drakmail/Develop/test_modules) error[E0463]: can't find crate for `my_lib` --> src/main.rs:1:1 | 1 | extern crate my_lib; | ^^^^^^^^^^^^^^^^^^^^ can't find crate error: aborting due to previous error
Alex
и не my_lib.rs называть, а lib.rs :)
а если у меня несколько файлов?
Денис
делай их модулями внутри либы
Денис
модули внутри бинаря ты можешь только юнит-тестировать на месте
Alex
хех, непривычно, но вроде имеет свои плюсы
Alex
о, заработал extern crate после того, как переименовал my_lib.rs в lib.rs
Alex
кажется, теперь почти понял логику работы 🙂
Alex
Спасибо!
Денис
ur welcome :) кстати есть чат для новичков — https://t.me/rust_beginners_ru
Alex
народу там не много... но вообще идеально для меня подходит :)
Маjко
tests/ для интеграционных
Маjко
https://doc.rust-lang.org/book/second-edition/ch11-03-test-organization.html
Alex
https://doc.rust-lang.org/book/second-edition/ch11-03-test-organization.html
>If our project is a binary crate that only contains a src/main.rs file and doesn’t have a src/lib.rs file, we can’t create integration tests in the tests directory and use extern crate to import functions defined in the src/main.rs file. Если бы я прочитал вот это предложение – сэкономил бы полчаса мук из-за неработающего extern crate %)
123
В actix-web, HttpRequest не имеет разделения на GET и POST? Т.е если я отправлю на один и тот же URI 2 разных запроса, то смогу получить их с помощью request.match_info().get("param_name").unwrap()?
Kerrigan
Post может передавать параметры по разному
Kerrigan
смотри в исходниках как обрабатывается
Cat
(ну и конеш роутеру можно поставить тип обрабатываемых запросов, если вопрос в этом)
123
спасибо за ответы. А для чего нужен State? Это что-то типа per-application контейнера для хранения какой-то общей инфы? Не совсем понял из примеров и доков
Денис
вот это не проясняет? https://actix.rs/book/actix-web/sec-2-application.html#state
123
не совсем. было бы намного яснее, напиши автор прямым текстом purpose, а не просто показывай, что он может делать. Хотелось бы более "четкие", "правильные" границы использования видеть
Alexander
Эээ, извиняюсь, баян наверное, но похоже появился вопрос про gui. Есть на что смотреть?
Денис
ахахахахахаха
Alexander
Удалось нагуглить relm, limn и conrod
Alex
блин, это так хорошо
Денис
Удалось нагуглить relm, limn и conrod
если серьёзно, обычно народ врапперы гтк юзает
Alexander
По сути надо практически ничего - график + мышь + пару текстовых полей.
Alexander
если серьёзно, обычно народ врапперы гтк юзает
Меня если честно ГТК сам по себе пугает, может для плюсовиков норм, но быстро не набросать.
Денис
на Qt можно быстро набросать
Денис
или даже QML
Денис
Vladislav
а можно ли где-нибудь посмотреть список изменений в ночных билдах?
Alexander
в общем если коротко — то нет, не на что пока смотреть :(
Ну а вот из того что нагуглил прямо вообще ничего?
Alexander
Так как все же нужно простое.
Alexander
Хочу график и по нему мышкой возить. Ну типа highcharts в js
Alexander
Просто на js не очень хочется, но фиг знает.
Денис
Ну а вот из того что нагуглил прямо вообще ничего?
конрод просто не работает, на relm'е, судя по примерам, быстро не накидаешь, limn: WARNING: Has primarily been tested on X11, serious bugs exist and all APIs are likely to change. Code is underdocumented and prototype quality, you probably don't want to use this (yet).
Денис
но примерчики на нём простые
Alexander
Ох, а что с конродом не так? У меня на него основная надежда была.
Денис
я его один раз решил потестить, в итоге это был какой-то лютейший пиздец
doc
Не надейтесь на большой фреймворк на расте
doc
В ближайшие годы