Денис
я надеялся, что nll порешает, но он почему-то не порешал :(
պլհկ
Ссылка сломается от пуша и привет
Денис
я беру ссылку после пуша
Денис
ссылка иммутабельная, это не даст юзеру, держа её, вызвать на контейнере 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
(я не знаю, просто предполагаю)
qthree
По меньшей мере забавно надеется что компилятор оптимизирует лапшу из итераторов, но не сможет оптимизировать два сравнения подряд
Cat
պլհկ
Денис
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
Денис
и да, функциональные тесты применимы только к библиотекам :)
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
Денис
делай их модулями внутри либы
Денис
модули внутри бинаря ты можешь только юнит-тестировать на месте
Alex
хех, непривычно, но вроде имеет свои плюсы
Alex
о, заработал extern crate после того, как переименовал my_lib.rs в lib.rs
Alex
кажется, теперь почти понял логику работы 🙂
Alex
Спасибо!
Денис
ur welcome :) кстати есть чат для новичков — https://t.me/rust_beginners_ru
Alex
народу там не много... но вообще идеально для меня подходит :)
Маjко
Ма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
смотри в исходниках как обрабатывается
Sergey
Cat
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
блин, это так хорошо
Alexander
По сути надо практически ничего - график + мышь + пару текстовых полей.
Денис
на Qt можно быстро набросать
doc
Денис
или даже QML
Anton
Денис
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
В ближайшие годы