Vladimir
Всмысле?
Маjко
В прямом
Маjко
Ща
Vladimir
" I think we should turn up codegen-units to the number of cores by default to get 2-3x faster builds with virtually no runtime impact"
Vladimir
Первым абзацем
Vladimir
Я помню про 32
Anton
http://doc.crates.io/manifest.html
Нашел, круто)
Anton
Надо проверить
Маjко
https://github.com/rust-lang/rust/issues/44941
Маjко
Короч суть в том что по идее между 4 и 32 не должно быть разницы практически
Маjко
Но по факту это не так
Маjко
Особенно если у тебя не проц на 16 потоков
Маjко
То что любое значение быстрее, чем 1
Маjко
Это очевидно
Маjко
Но там и так не 1 по дефолту, а 32
Anonymous
можно ли определить тип не-пустого списка в расте?
Anonymous
nvm enum NotEmpty<T> { Beginning(T), Cons(T, Box<NotEmpty<T>>) }
кана
Непустой список это один конструктор
кана
Который принимает элемент и любой другой список, в том числе и пустой
Anonymous
ват
Anonymous
это как
кана
data List a = Nil | Cons a (List a) data NonEmpty a = NonEmptyCons a (List a)
кана
Работать с этим конечно не сильно удобно
Anonymous
намного логичнее выглядит
кана
Но вроде как это самая распространенная реализация
кана
Ну, одна из причин - нужно занового реализовать все операции
Anonymous
или просто as_vec from_vec
Anonymous
😏
кана
Ну, в нелинивом языке это такое)
Anton
народ, есть вопрос, есть кто пишет на плюсах в vs code?
ne_on
там должен быть чат по плюсам
Anton
Дякую
Dårk
вопрос для профи растаманов
Dårk
для реально шарящих в происходящем
Dårk
готовы?
Dårk
(даа, капитан хД)
Dårk
так вот,
Dårk
как заставить компилятор сгенерить специализализированные дефолтные методы у trait?
Dårk
т.е. у метода обязан быть дженерик (`Self: Sized` например), и это препятствует динамическому диспатчу. ошибка: the `render method cannot be invoked on a trait object`.
Dårk
убрать Self: Sized тоже нельзя, т.к. методы, используемые внутри, того требуют.
Dårk
проверил. можно убрать дефолт код, и повтыкать копии в каждый impl View. но это ж дичь.
Маjко
@sajitar давай с примером на play.rust
Bugworm
https://www.reddit.com/r/rustjerk/comments/7c86n0/rust_x_go/
Dårk
https://play.rust-lang.org/?gist=ea37a6ac47b87c7ebbd203b0c9fae556&version=undefined
Dårk
итак, господа? где тот волшебный #[аттрибут], который заставит компилятор сгенерировать по версии метода на каждый тип?
Маjко
impl называется
Маjко
https://play.rust-lang.org/?gist=c973287b920a5f550c3e2218b51cedb5&version=stable
Dårk
ххммм… а ты хорош.
Dårk
позор на мою седую голову, я ведь неделю назад такую же хрень провернул, и тоже с иерархией трэйтов
Маjко
Со специализацией можно вот так завернуть еще. https://play.rust-lang.org/?gist=cd0c87cf38386183c380b19901d85e6a&version=nightly
Маjко
Если нужно какие-то данные еще дергать из типов
Маjко
Ну или просто создать трейт ViewExt и сделать в impl баунд Sized + ViewExt
Dårk
никогда не видел default fn O_o
Dårk
мне нужно пару минут кое-что протестить.
Dårk
в настоящем трэйте много методов, есть без дефолтов
Dårk
итак. круто, но не работает. т.к. есть методы без дефолтов, и их имплементить для любого T:Sized не нужно
Маjко
Не понимаю че хочешь
Маjко
Давай в плейграунд
Dårk
я хочу всё того же. но не могу impl<T:Sized> View for T {fn render(){...}}, потому что у меня есть другие методы помимо render, которые (по мнению компилятора) нужно определить для T
Dårk
что делает default fn? меня в гугле забанили, и выдают всякую левую дичь.
Anonymous
https://github.com/rust-lang/rfcs/blob/master/text/1210-impl-specialization.md#the-default-keyword
Anonymous
@sajitar ^
Dårk
Dårk
default impl это нечто. оно работает, но только в пределах одного файла. сабмодуль уже не соображает.
Dårk
перемещаю всё в один файл — компилится, сволочь
Dårk
а use super::*; — нихрена
Dårk
ААААААААААААААААААаааа
Dårk
это просто дикий ор
Dårk
mod windows {...} в том же файле — и снова всё компилится
Маjко
Найтли фичи, они такие
Маjко
Я говорю
Маjко
Вынеси остальные функции в отдельный трейт
Маjко
Ну или просто создать трейт ViewExt и сделать в impl баунд Sized + ViewExt
Anonymous
Такой холиварный вопрос, но может имел кто дело с с++: Для новичка кол-ва полезного кода на единицу времени выше в C++ или Rust будет? Мне просто нужна производительность, но скорость разработки тоже важна. В плане либ для моих задач думаю оба языка подойдут.
ne_on
в rust, по крайней мере по началу много уходит времени на борьбу с компилятором, зато мало времени на отладку и поиск разного рода сегфолтов и утечек памяти. В плюсах всё наоборот. Так что Rust лучше в конечном счёте и эффективней.
Anonymous
еще спрошу: есть ли либа для раста, которая даст функциональность как в питоновском urllib.request.urlretrieve() - чтобы можно было ввести URL будь то картинки, будь то обычного css/js файла, и он автоматически скачает это на диск? rllib.request.urlretrieve('https://docs.python.org/3/_static/pygments.css', 'pygments.css')
Anton
crate reqwest
Anton
Но не совсем конечно так, немного дописать придется