Matwey
Ну, т.е. я не ожидаю, что пользователь функции где-то будет коллекционировать вывод функции
Matwey
Я думаю, что он его хочет записать куда-нибудь
Matwey
в файл или сокет
Matwey
Что прочитать?
Dårk
Dårk
everything is a stream
Vladimir
блин, ну тогда скорее всего итератор правильнее всего
Vladimir
а пользователь его если что завернет куда надо
Matwey
я вот смотрю std::io::Read
Matwey
вроде бы тоже похоже
Vladimir
но это трейт
Vladimir
хотя никто не мешает реализовать тебе его для своего итератора
Matwey
ну я имею ввиду, что верну нечто для чего будет реализован Read
Ilya
Ну да, можешь сделать структуру, которая будет реализовывать Read и опционально Iterator
Ilya
В результате у пользователя будет возможность делать с данными что угодно
Matwey
А может сделать функцию и отдать в нее Write?
Маjко
Можно
Matwey
Пусть функция пишет кусочками, которыми ей удобно
Matwey
BufWrite можно сверху накрутить, если будет медленно.
Ilya
Да, можно, как вариант. fn my_func<T: Write>(arg: &mut T)
Matwey
Пожалуй, так и попробую.
Matwey
Спасибр
Vladimir
Да, можно, как вариант. fn my_func<T: Write>(arg: &mut T)
Разве для & mut T не реализован Write?
Ilya
Разве для & mut T не реализован Write?
Ммм? В этом коде функция будет принимать любой тип с реализованным Write. Что не так?
Vladimir
В этом коде она будет принимать ссылку на любой тип
Vladimir
Ссылка лишняя
Vladimir
Пусть пользователь сам решает как передавать врайт
Vladimir
Может у него stdout какой-то, зачем ему лишний раз ссылку брать, или просто единственное для чего он врайт открыл, чтоб функцию дернуть
Ilya
Хм
Ilya
let me check
Vladimir
Та я уже глянул, реализован врайт для & mut T: Write
Ilya
Ну тогда да, ссылка действительно лишняя
Matwey
Господа, а как можно спросить у компилятора какой тип у переменной x?
Matwey
Я что-то написал, а он что-то вывел туда
Matwey
А я не понял что
Vladimir
let x:() = variable;
ozkriff🇺🇦
let () = нужная переменная;
Vladimir
Вызвать ошибку не соответствия типа
Matwey
Спасибо, котики
Matwey
Хм, а как правильно задавать константы времени компиляции в виде массивов? let x: [i32; 4] = [1,2,3,4];Меня смущает что слева и справа нужно указывать одинаковую длину массива. Нельзя ли, чтобы rust длинну массива вывел из правой части, а вот типы элементов проверил все-таки во время компиляции?
ozkriff🇺🇦
let x = [1_i32,2,3,4];
Matwey
Так я уже догадался, но подумал, что можно как-то более красивее
Marat
А если нижнее подчеркивание вместо длины?
Matwey
https://play.rust-lang.org/?gist=341bde99f8911f09331eb1e1eea6ee15&version=stable Вот я бы хотел чтобы оно ломалось, а не ворнинг выдавало
ozkriff🇺🇦
ну можно еще let y = [1 as i32, 2, 3, 4];
Matwey
Нижнее подчеркивание не канает
Marat
не ест :(
Да, проверил тоже
ozkriff🇺🇦
Так я уже догадался, но подумал, что можно как-то более красивее
обычно проще добиться что бы тип массива был понятен по контексту использования
Matwey
А, ну да
Matwey
Я же могу этот массив потом запихать в функцию которая ждет &[u8] ?
պլհկ
Да
Matwey
И все типы проверятся на ходу, да?
պլհկ
На каком ходу?
ozkriff🇺🇦
https://play.rust-lang.org/?gist=13daaabd7b90beafb2bdf00ac467e2cf да
Matwey
На ходу конопляции
Matwey
https://play.rust-lang.org/?gist=2642406900ee0e931cb591cd19cb4950&version=stable Я прочитал, что для Vec реализован треитс Write и решил попробовать. Получил неожиданный результат.
Anonymous
>треитс
Anonymous
ААААААА
Matwey
не переживай так, чо ты
Matwey
Там вон выше объяснили вроде что есть реализация Write для ссылки на Write, поэтому можно не писать ссылку, а просто тип
Matwey
Но компилятор почему-то решил смувить мой вектор внутрь
ozkriff🇺🇦
я думаю ты как-то так хотел: https://play.rust-lang.org/?gist=dffc9c59f9e710ef11c6fb9c5f9feed0
Matwey
Да, спасибо. Я ожидал что он выведет сам, но теперь понял, что и не должен был
ozkriff🇺🇦
а ему тут нечего выводить - семантика перемещения первична
Ilya
-> () можно не писать
Маjко
А как же "явное лучше не явного"?
Маjко
Вообще с появлением @ozkriff и @vitvakatu в чате обстановка стала намного адеватнее и разговоры про раст появились хд Респект, ребята, вы задали тренд, который тут уже пол года никто не мог стартануть
Маjко
В голос
Matwey
-> () можно не писать
Спасибо, сложно запоминть весь сахар с самого начала :(
Vladimir
Нету шрамко
Vladimir
И прочего зоопарка
Маjко
Ах да, где же наша бородатая звёздочка?
Vladimir
Не, это точно не забудем
А может это нам перестанет быть нужным?
Vladimir
Это ещё хуже...