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

  Рет қаралды 12,359

Computer Science Center

Computer Science Center

5 жыл бұрын

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

Пікірлер: 24
@scriptozavr
@scriptozavr 5 жыл бұрын
Спасибо огромное Алексей! Столько нового для себя узнал.
@vlad071096
@vlad071096 5 жыл бұрын
Алексей отвечает только на комментарии с замечаниями)
@luna_moonspeak
@luna_moonspeak 5 жыл бұрын
31:35 Мне кажется фраза должна быть "Можно _добавить_ mut с локальной переменной", а не убрать, ведь его сначала не было)
@vbprogr10
@vbprogr10 3 жыл бұрын
1:26:36 а почему просто не поместить UnsafeCell внутрь Option, а не наоборот как сейчас? или не решит проблему?
@KirillLykov
@KirillLykov 2 жыл бұрын
Ссылка на статью в конце лекции если кому-то лень набирать -- smallcultfollowing.com/babysteps/blog/2014/05/13/focusing-on-ownership/
@user-ci8mb5qc5d
@user-ci8mb5qc5d 5 жыл бұрын
Про PhantomData будут объяснения?
@Uni-Coder
@Uni-Coder 5 жыл бұрын
Кто-нибудь понял 48-й слайд? Откуда взялся тип RefMutCell, его раньше не было. И есть другие непонятные моменты.
@dmitryshkulnik8395
@dmitryshkulnik8395 5 жыл бұрын
Поправьте ссылку на страницу лекции
@luna_moonspeak
@luna_moonspeak 5 жыл бұрын
23:09 мне кажется во втором вызове reverse должно быть reverse(tmp), а не reverse(xs), разве нет?
@alexeiguirik9463
@alexeiguirik9463 Жыл бұрын
Кто знает, о каком "проверяльщике" memory model идет речь на слайде 60?
@user-yd7ds6po4l
@user-yd7ds6po4l 2 жыл бұрын
Правильный ответ на вопрос «зачем нужны и memcpy, и memmove» - одного в современном мире достаточно, более того, на моей машине они оба диспатчатся в __memmove_avx_unaligned_erms. Современные реализации того и другого настолько громоздки, что от ифика про то, кто в памяти лежит раньше, не меняется решительно ничего.
@illiadenysenko7776
@illiadenysenko7776 4 жыл бұрын
47:12 Если это про split_at_mut, она же юзает unsafe? Или это больше про "такая возможность есть, но вот для этого есть функция"?
@alekseykladov1144
@alekseykladov1144 4 жыл бұрын
Да, split_at_mut через unsafe реализован, но исходя из сигнатура функции &mut -> (&mut, &mut) компилятор понимает, так же, как ки с полями структур, что, пока живы ссылки на подслайсы, ссылка на весь слайс недоступна.
@oriontvv
@oriontvv 3 жыл бұрын
Не понял в конце про сравнение классов всех программ на раст и плюсах. Они же оба тьюринг-полные о_О
@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
Dynamic #gadgets for math genius! #maths
00:29
FLIP FLOP Hacks
Рет қаралды 18 МЛН
The Worlds Most Powerfull Batteries !
00:48
Woody & Kleiny
Рет қаралды 12 МЛН
CAN YOU HELP ME? (ROAD TO 100 MLN!) #shorts
00:26
PANDA BOI
Рет қаралды 36 МЛН
Азы программирования в 1С за 3 часа
3:46:49
IRONSKILLS - Курсы по 1С
Рет қаралды 3,3 МЛН
CatBoost - градиентный бустинг от Яндекса
1:20:53
Computer Science Center
Рет қаралды 30 М.
Архитектура операционной системы
48:41
Денис Бречка
Рет қаралды 1,4 М.
4. Модули. Программирование на Rust (весна 2019)
1:38:01
Многопоточность и GIL
1:21:47
Computer Science Center
Рет қаралды 34 М.
Rewrite It In Rust: Переписываем с C++ на Rust. Александр Шишенко, Librevault
37:41
Видео с мероприятий {speach!
Рет қаралды 4,7 М.