Loo
Loo
Loo
Что это?
Marat
Что это?
Мифический стабильный раст на котором можно писать
Anton
Loo
Зачем вам стэйбл посоны
Loo
Anton
ок, чем найтли лучше?
Loo
Доступ к найтли фичам всем, очевидно
Vladimir
Anonymous
низя
Vladimir
Обидно
Anton
https://manishearth.github.io/blog/2015/09/01/designing-a-gc-in-rust/
Anton
Наброшу старую хуйню
Anton
но вроде не баян
Маjко
Баян
պլհկ
https://github.com/crossbeam-rs/crossbeam-epoch 😏
Loo
Я немножко проебался
Loo
https://rust-lang.github.io/rfcs/
ne_on
посоны. а правда что у вас конкатенация такая ебанутая? https://ashleygwilliams.github.io/a-very-brief-intro-to-rust/#11
պլհկ
кто ебанутый ты ебанутый
պլհկ
let mut realstring = String::from("hello ");
realstring += "world";
ne_on
сам ты наташа
Anton
stalkerg
ne_on
ну в принципе да, очень похоже и через format() можно
#!/bin/env python3.6
str1: str = 'hello '
str1 += 'world'
Сережа
Anonymous
Сережа
я предполагаю там возможно переаллоцирование буфера, который строку хранит
Сережа
это же наверное не джава, чтобы по += создавать новый экземпляр String
Anonymous
Джава и не создаёт
Loo
забенчите посоны
Anonymous
Там стрингпул есть
Loo
вы же это любите
Loo
стринг плюсики
Loo
забенчите
Kerrigan
создает
Kerrigan
если не может оптимизировать
Loo
лол. февраль 2016 - админ долбоёб бенчит строки: https://forum.rustycrate.ru/t/benchmarking-preobrazovaniya-string-v-str-i-obratno/66/3
Loo
Kerrigan
https://habrahabr.ru/post/342002/ орнул
Kerrigan
> Как обычно, сообщество Rust не подкачало. Как только эта статья попала в подреддит о Rust, пользователь nwydo указал на предыдущее обсуждение этой темы. Вот их оптимизированный код, который пробивает 3 ГБ/с на моей машине
Kerrigan
у меня рили 10 ГБ/с пробивает
պլհկ
начинай
Kerrigan
Kerrigan
а то будешь чувствовать себя некультурным
Kerrigan
:D
Vladimir
Vladimir
кто-то кидал в чат либу для бенчмарков? Аналог того что сейчас, только умеющую графики строить?
Vladimir
ладно, тогда я кину https://github.com/japaric/criterion.rs
Loyd
[test] удручает, конечно
Vladimir
можешь создавать бинарники
Vladimir
тест тут чтоб автоматически запустить
Loyd
Я понимаю, почему там test
Loyd
Меня бесит, что там не bench
Loyd
С test тоже так себе — где гарантии, что он обычные тесты запускать не будет? Как он определяет, что это бенчмарк?
Loyd
Ну и cargo bench таки с оптимизациями собирает, а тут нужны пляски
Loyd
Год назад смотрел этот criterion, за год ничего не изменилось
Loyd
Loyd
Anton
Loo
Vladimir
Vladimir
потому что раньше to_string был через формат, а сейчас через специализацию для строки сделан
Vladimir
а to_owned() всегда должен был быть аналогичен from
Vladimir
fn to_owned(&self) -> String {
unsafe { String::from_utf8_unchecked(self.as_bytes().to_owned()) }
}fn from(s: &'a str) -> String {
s.to_owned()
}
Max
Несилятор снова не может в трейты
Хочу вернуть u64 как Hash из функции, даже Box не помогает
https://play.rust-lang.org/?gist=47fd5feb0a93f5e960b9302a75d66b2c&version=stable
Vladimir
Тебе нужен impl Trait
Max
(на самом деле там еще трейт в Vec обернут, так что не прокатит)
Vladimir
fn test<T> подразумевает, что вызывающая сторона задает конкретный тип.
Ты же хочешь вернуть что-то конкретное реализующее типаж.
Vladimir
т.е. я могу вызвать в твоем примере test::<u32>
и код должен работать.
Vladimir
В век можно оборачивать имплы вроде. Например в бокс точно можно
fn test() -> Box<impl Hash> {
Box::new(10u64)
}
Vladimir
почему ты не можешь задать конкретный тип?