Тёмный

11. unsafe. Программирование на Rust (весна 2019). 

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

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

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

 

27 апр 2019

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 14   
@q3yk945
@q3yk945 4 года назад
1:15:10 - Проще говоря, проблема в том что мы пытаемся записать в &mut self ссылку, полученную из того же &mut self. Т.е. пытаемся сделать self referential тип.
@wa7sa34cx
@wa7sa34cx 2 года назад
Нифига не понятно, но ооооочень интересно 🧐
@user-yk6sp5of6t
@user-yk6sp5of6t Год назад
1:36:52 После фокуса на то, что даже уникальные ссылки ковартианты по собственному лайфтайму, всё равно сказал, что наличие PhantomData
@user-jx4jb4of3c
@user-jx4jb4of3c 2 года назад
Про subtyping ужасно сумбурно пояснил. Хоть и в rustonomicon это тоже подано сложно, но все равно понял. Хороший пример такой можно привести из наследования C++. Наследуемый/родительский тип всегда меньше чем дочерний, поскольку дочерний содержит и данные родителя и свои уникальные. По этой логике Красноярский край является подтипом города Красноярска. С lifetype subtyping та же логика. В растономиконе, тоже пример был географический.
@luna_moonspeak
@luna_moonspeak 5 лет назад
Оговорка ) 31:45 "Если индекс 1 и индекс мут равны...", а должно быть "если индекс 1 и индекс 2 равны..."
@prigl4548
@prigl4548 3 года назад
В примере с реализацией IterMut из слайса с сырыми указателями begin и end в состоянии не очень понятно, откуда берется гарантия, что их потом можно разыменовывать. Хоть они и не объявлены как pub, их все равно хотя бы в текущем модуле можно изменить на произвольные значения, для чего unsafe не потребуется. А вот метод, который их будет в unsafe разыменовывать, получается что должен полагаться на корректность кода в safe (или даже на отсутствие такого кода), что как бы противоречит первоначальной идее. В более общем случае с сырыми указателями возникают новые инварианты, которые unsafe код не может проверить, а safe код может нарушить. Что-то ключевое в понимании этой философии у меня ускользает.
@nanoqsh
@nanoqsh 3 года назад
Идея в том, что unsafe распространяется на весь модуль. Так что да, unsafe полагается на соседний safe код и наоборот. Поэтому нужно стараться изолировать unsafe код в как можно более простом и маленьком модуле. Подробно про это рассказывается на следующей лекции
@prigl4548
@prigl4548 3 года назад
@@nanoqsh да, спасибо. Следующая лекция и правда ответила на мой вопрос.
@snatvb
@snatvb 4 года назад
идеологически, почти, unsafe выполняет роль io в хаскеле)
@alekseykladov1144
@alekseykladov1144 3 года назад
Не уверн, что соглашусь -- для хаскелевского IO нет аналога safe abstraction. Нельзя оберунть заражённый IO интерфейс в sans-IO. А главная мысль растового usnafe как раз в том, что сверху unsafe можно сделать не-usnafe абстракцию. Тут аналогия скорее с unsafePerformIO.
@olebedev
@olebedev 5 лет назад
Просто любопытно, а есть те кто понял про "вариантность"? Часто даже слова разобрать невозможно...
@codonaft
@codonaft 5 лет назад
Если предварительно что-нибудь посмотреть на эту тему - то понять можно, хотя бы частично. Вот тут разжевано про вариантность в Java: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-tlAGSScIu_w.html
@user-sp9jq3ee7z
@user-sp9jq3ee7z 5 лет назад
Возможно кому-то поможет: ru.wikipedia.org/wiki/Ковариантность_и_контравариантность_(программирование)
@user-jx4jb4of3c
@user-jx4jb4of3c 2 года назад
Сразу понятно почему не стал объяснять контравариантность ф-ии по аргументу и результату. Ну это же очевидно. А почему не объяснил? Потому что вообще не раскрыл термин variance который можно просто стащить с rustonomicon-а
Далее
I Built 4 SECRET Rooms In ONE COLOR!
29:04
Просмотров 19 млн
Это новый МАЗ X - могут же!
23:40
Просмотров 376 тыс.
Rust's Journey to Async/Await
48:46
Просмотров 86 тыс.
Сети для самых маленьких
1:11:54
Просмотров 9 тыс.
Rust: A Language for the Next 40 Years - Carol Nichols
55:08
Как ИДЕАЛЬНО настроить RUST 2023
46:44
Андрей Роенко - WebAssembly без купюр
1:00:47
I Built 4 SECRET Rooms In ONE COLOR!
29:04
Просмотров 19 млн