Денис
if let Some(x) = my_hashmap.get_mut(&key) { *x = *x+1; } else { my_hashmap.insert(key, 1); }
он изначально делает &mut. поэтому в X изначально &mut x. pub fn get_mut<Q: ?Sized😠&mut self, k: &Q) -> Option<&mut V> описание метода https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.get_mut
Денис
и поэтому он компится
Anonymous
пздц
Денис
Денис
?
Anonymous
?
https://play.rust-lang.org/?gist=a98d3ca1101be8669245b08a60269d58&version=stable
Денис
и? я это уже компил. и по поводу "странного метода" ответило мне описание метода. метод возвращает Option<&mut T> а следственно ни о каких ref mut речи не идет
Mark
https://yew.now.sh/
Mark
rust + wasm => todomvc (75Kb)
Mark
Loyd
В либе мутабельный стор
Loyd
В ишьюсах обсуждение есть
Anonymous
ишьюсах
Alexey
Мутабельный стор это зашквар?
Bugworm
Firefox 58 Bringing Faster WebAssembly Compilation With Two-Tiered Compiler http://www.phoronix.com/scan.php?page=news_item&px=Firefox-58-2-Tiered-Compiler
Sergey
если что есть @webassembly_ru
LexsZero
https://github.com/svenstaro/genact наконец-то на русте что-то полезное написали.
Anton
:D
Антон
Даже веб-версия на wasm есть. Замечательно
Anton
Есть какой нить крейт для замера времени выполнения функций?
Anton
чтобы самому не писать
Anonymous
bench
Anonymous
это подкомманда, которая в комплекте с карго идёт
Anton
Ну он программу мерит
Anonymous
вроде нет
Sergey
Найтли
Sergey
В стейбле бенчмарки не работают
分解物質
Есть какой нить крейт для замера времени выполнения функций?
не думаю что с его помощью ощутимо меньше кода будет
Sergey
Benchmark tests https://doc.rust-lang.org/1.12.1/book/benchmark-tests.html
պլհկ
https://crates.io/crates/bencher
Anton
наверно не корректно задал вопрос - у меня сейчас let mut watcher = Watcher::new(); //... watcher.show("MARK1"); //... watcher.show("MARK2"); На выходе выхлоп по меткам 00.000 | 00.000 | BEGIN 00.009 | 00.009 | DB OPEN 00.009 | 00.000 | PARSE BEGIN 00.009 | 00.000 | PARSE END 00.009 | 00.000 | LINK MATCH BEGIN 00.044 | 00.034 | LINK MATCH END 00.044 | 00.000 | LINK MATCH: X 00.044 | 00.000 | CACHED 00.339 | 00.294 | END
Anton
первый столбец - общее время, второй относительно предыдущей метки
Anton
Что то такое стандартное есть?
Anton
Единственное похожее нашел https://crates.io/crates/stopwatch
Anton
Может свою фиговину в виде крейта оформить :/
պլհկ
хайпани на крейтах
Anton
У меня сервис должен отвечать до 1sec, сейчас используется то что я выше написал, оно логирует каждый запрос, мусора много, хотел допилить что то типа report_if(Duration)
Anton
логировать только если время больше Duration, с разбиением по секиям
Anton
ТОлько вот задумался наверняка такое кто нить уже писал
分解物質
интересно почему у rustc -С opt_level=3 вместо обычного и лаконичного -O3?
Sergey
https://gist.github.com/greyblake/9739e3bebb6ef36aeff4efa1e943b856
Sergey
https://gist.github.com/greyblake/9739e3bebb6ef36aeff4efa1e943b856
Anton Вот что-то похожее когда писал
Anton
Да похоже, только у тебя общее время выполнения, мне нужно по секциям - например долгий ответ от дб - или долгий парсинг
Anton
как лучше enum Report { Always, LessThan(Duration), GreaterThan(Duration), }
Anton
или сокращения lt gt lte gte
Anton
Есть мнения?
Alexey
спроси у тех, кто будет читать и править твой код
Anton
Сокрее всего никто кроме меня, это для ненужного крейта =)
Sergey
тогда лучше foo ,bar, baz
Alexey
i1,i2,i3
Alexey
классика же
Alexey
это если целочисленный тип конечно
Anton
Там же услувия для отчета (total time) Always Never LessThen(Duration) GreaterThen(Duration) LessOrEq GreaterOrEq
Alexey
d1,d2,d3 - это уже например тип real, ой, float
Anton
У меня ну отчет ставится енум - в каком случае выводить отчет
Anton
match self.report { Report::Always => report(), Report::Gt(ref v) if &total > v => report(), Report::Ge(ref v) if &total >= v => report(), Report::Lt(ref v) if &total < v => report(), Report::Le(ref v) if &total <= v => report(), _ => {} }
kitsu
или сокращения lt gt lte gte
яб предпрчел это
Anton
gt/ge/lt/le нужны - для случаев "если общее время выполнения функции - соответствоет Duration"
Alexey
мудрость предков: все переменные начинающиеся с букв от i до n имеют тип integer, все остальные - float.
Anton
яб предпрчел это
Самый популярный вариант pub enum Report { Always, Never, Gt(Duration), Ge(Duration), Lt(Duration), Le(Duration), }
Anton
Наговнокодил побырику https://github.com/anton-dutov/howmuch-rs/blob/master/src/lib.rs критика приветствуется
Kerrigan
что мне не нравится в расте - я постоянно пишу create вместо crate
Kerrigan
https://github.com/nvbn/thefuck
оно не пофиксит мне синтаксис
Andrei
https://twitter.com/jusrin00/status/875238742621028355
Антон
оно не пофиксит мне синтаксис
Напиши плагин для компилятора
Andrei
транскрипт есть?
Маjко
что мне не нравится в расте - я постоянно пишу create вместо crate
alias cargo='grep "extern create" -r && echo "LOL NOOB" || cargo $@'
Kerrigan
бггг
Антон
транскрипт есть?
Где-то точно видел. Как минимум это части
Антон
транскрипт есть?
http://www.lispcast.com/clojure-and-types
Andrei
http://www.lispcast.com/clojure-and-types
это дискуссия с отсылками к
Andrei
http://www.lispcast.com/clojure-and-types
> When I moved into a Clojure job, I felt such a sense of freedom. I could treat information as information and not have to prove anything to a type checker. так вот к чему это всё. но ведь stringly typed никто не отменял, в чём проблема?
Kerrigan
что-то мне кажется, что yew подтормаживает