Тёмный

8. Время жизни II (Программирование на Rust) 

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

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

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

 

5 апр 2019

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 24   
@scriptozavr
@scriptozavr 5 лет назад
Спасибо огромное Алексей! Столько нового для себя узнал.
@vlad071096
@vlad071096 5 лет назад
Алексей отвечает только на комментарии с замечаниями)
@luna_moonspeak
@luna_moonspeak 5 лет назад
31:35 Мне кажется фраза должна быть "Можно _добавить_ mut с локальной переменной", а не убрать, ведь его сначала не было)
@user-ci8mb5qc5d
@user-ci8mb5qc5d 5 лет назад
Про PhantomData будут объяснения?
@Uni-Coder
@Uni-Coder 5 лет назад
Кто-нибудь понял 48-й слайд? Откуда взялся тип RefMutCell, его раньше не было. И есть другие непонятные моменты.
@dmitryshkulnik8395
@dmitryshkulnik8395 5 лет назад
Поправьте ссылку на страницу лекции
@KirillLykov
@KirillLykov 2 года назад
Ссылка на статью в конце лекции если кому-то лень набирать -- smallcultfollowing.com/babysteps/blog/2014/05/13/focusing-on-ownership/
@vbprogr10
@vbprogr10 3 года назад
1:26:36 а почему просто не поместить UnsafeCell внутрь Option, а не наоборот как сейчас? или не решит проблему?
@luna_moonspeak
@luna_moonspeak 5 лет назад
23:09 мне кажется во втором вызове reverse должно быть reverse(tmp), а не reverse(xs), разве нет?
@user-yd7ds6po4l
@user-yd7ds6po4l 2 года назад
Правильный ответ на вопрос «зачем нужны и memcpy, и memmove» - одного в современном мире достаточно, более того, на моей машине они оба диспатчатся в __memmove_avx_unaligned_erms. Современные реализации того и другого настолько громоздки, что от ифика про то, кто в памяти лежит раньше, не меняется решительно ничего.
@alexeiguirik9463
@alexeiguirik9463 Год назад
Кто знает, о каком "проверяльщике" memory model идет речь на слайде 60?
@oriontvv
@oriontvv 3 года назад
Не понял в конце про сравнение классов всех программ на раст и плюсах. Они же оба тьюринг-полные о_О
@illiadenysenko7776
@illiadenysenko7776 4 года назад
47:12 Если это про split_at_mut, она же юзает unsafe? Или это больше про "такая возможность есть, но вот для этого есть функция"?
@alekseykladov1144
@alekseykladov1144 4 года назад
Да, split_at_mut через unsafe реализован, но исходя из сигнатура функции &mut -> (&mut, &mut) компилятор понимает, так же, как ки с полями структур, что, пока живы ссылки на подслайсы, ссылка на весь слайс недоступна.
@eamarc
@eamarc 2 года назад
не понимаю, почему для fn f4(x: &i32, y: &i32) -> &i32 компилятор не хочет сделать fn f4
@ruslanaliyev3765
@ruslanaliyev3765 2 года назад
Это глупое решение. Потому что возвращаемое значение зависит только от одного аргумента.
@nanoqsh
@nanoqsh Год назад
@@ruslanaliyev3765 не факт: if crayfish.whistles_on_mountain() { return x } else { return y }; Тут скорее решение в том, что скорее всего возвращается что-то одно и чтобы не ломать валидный код придумано так, что лучше расставь явно лайфтаймы как тебе нужно. Иначе второй параметр должен будет жить слишком мало, хотя это и не нужно
@usercommon1
@usercommon1 11 месяцев назад
тот же квешн
@aleksandrkravtsov8727
@aleksandrkravtsov8727 3 года назад
шото эа лекция как будто какая то сложноватая..
@Pavel.Zhigulin
@Pavel.Zhigulin 4 года назад
24:00 - 25:00 - вот эта тема про reborowwing точно работает не так, как объясняется. Я не знаю как оно на самом деле работает, но точно не так. Вот такой код совершенно валиден: fn foo(x: &mut i32) { ...} let mut x = 32; let r1 : &mut i32 = &x; let r2 : &mut i32 = &x; let r3 : &mut i32 = &x; foo(r1); foo(r2); foo(r3); Но вот например что-то такое не скомпилируется: bar(r1, r2)
@alekseykladov1144
@alekseykladov1144 4 года назад
Да вроде первый пример не компилируется? play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=63befa0eabdeaf40ebf13ba4a7ef2018 `&T` ссылки Copy, `&mut T` нет
@alexs7931
@alexs7931 2 года назад
Я тоже не понял, где тут расходуется ссылка, может объясняется как компилятор "предотвратил" расходование ссылки...
@nanoqsh
@nanoqsh Год назад
Этот код не компилируется. Нельзя из &x получить &mut x. Даже если исправить на &mut x, всё равно не скомпилируется: cannot borrow `x` as mutable more than once at a time
Далее
ГЕНИИ МАРКЕТИНГА 😂
00:35
Просмотров 585 тыс.
Tragic Moments 😥 #2
00:30
Просмотров 1,8 млн
Отображения множеств
14:56
Просмотров 32 тыс.