Тёмный

12. Коллекции. Программирование на Rust (весна 2019) 

Computer Science Center
Подписаться 161 тыс.
Просмотров 8 тыс.
50% 1

Двенадцатая лекция курса «Программирование на Rust» (весна 2019).
Преподаватель - Алексей Александрович Кладов.
Страница лекции на сайте CSC: bit.ly/2VfKQqZ
Ссылка на материалы: github.com/matklad/rust-course
Все лекции курса: bit.ly/2QfWama

Опубликовано:

 

12 май 2019

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 15   
@prigl4548
@prigl4548 3 года назад
Забрать владение у элементов вектора в плюсах можно через std::make_move_iterator. Правда в rust'е move всё равно круче. Тут более показательным мог бы быть пример с key-value контейнером, где забрать владение неизменяемым ключем коллекции в плюсах возможно только через что-то вроде метода extract в цикле с необходимостью сохранения инвариантов контейнера на каждой итерации цикла. А вот гарантированное поглощение экземпляра контейнера в rust уже позволяет разодрать на части ассоциативный контейнер в into_iter(self) без необходимости поддерживать инварианты контейнера в процессе извлечения элементов. Для меня это могло бы быть одним из мотивационных примеров rust'а вообще.
@Uni-Coder
@Uni-Coder 4 года назад
52:20 С появлением трейтов Pin и Unpin, кажется, уже не все данные можно спокойно мувить? Или об этом уже было? Если нет, то хотелось бы лекцию про Pin, Future, async/await
@nanoqsh
@nanoqsh 2 года назад
Формально все типы можно мувить, в том числе и сам Pin. Pin пинит не типы, а указатели на значения. Просто у Pin такое API, что запиненный объект нельзя куда-то замувить. Например из Pin нельзя получить &mut T. Но это в двух словах, на деле там всё намного сложнее и нужно разбираться читая документацию
@vladzhukov6116
@vladzhukov6116 5 лет назад
14:10 чего? :)
@vladzhukov6116
@vladzhukov6116 5 лет назад
мне кажется это был UB
@alekseykladov1144
@alekseykladov1144 5 лет назад
Похоже на то...
@AndrewKozin
@AndrewKozin Год назад
34:11 Тут непонятно. Если `ptr::read` не копирует объект, а просто возвращает содержимое указателя как объект типа `T`, получается, что с одной стороны мы вернули этот объект из функции и передали им владение какой-то переменной. С другой стороны, его содержимое всё ещё лежит в памяти по старому адресу, каковой адрес будет занят новым элементом вектора после очередного `push`.
@AndrewKozin
@AndrewKozin Год назад
Агада, на самом деле "read creates a bitwise copy of T, regardless of whether T is Copy. If T is not Copy, using both the returned value and the value at *src can violate memory safety. Note that assigning to *src counts as a use because it will attempt to drop the value at *src."
@vladzhukov6116
@vladzhukov6116 5 лет назад
а в чем слайды сделаны? В латехе как- то неудобно с растом показалось.
@alekseykladov1144
@alekseykladov1144 5 лет назад
github.com/Mogztter/asciidoctor-pdf.js/ Я в ближайщее время выложу исходники в открытый доступ
@vladzhukov6116
@vladzhukov6116 5 лет назад
спасибо!
@alekseykladov1144
@alekseykladov1144 5 лет назад
исходники слайдов: github.com/matklad/rust-course
@user-hw2zf7tj4t
@user-hw2zf7tj4t 3 года назад
11:35 - в чем полезность знание внутренней структуры объекта в ООП если вам от него нужен API? автор в некоторых местах натягивает сову на глобус.
@nanoqsh
@nanoqsh 3 года назад
Он как раз и сказал, что в Rust философия противоположна ООП. Где тут натягивание совы?
@user-hw2zf7tj4t
@user-hw2zf7tj4t 3 года назад
@@nanoqsh каюсь погорячился
Далее
Жизнь
00:58
Просмотров 2 млн
Rust: A Language for the Next 40 Years - Carol Nichols
55:08
Классы 1
1:24:48
Просмотров 29 тыс.
Жизнь
00:58
Просмотров 2 млн