какой курс выбрать
Что реально поможет стать востребованным?
Рекомендуете ли вы книгу «Основы информационной безопасности» Е.В. Вострецова?
У переменной a указан тип встроенный массив [T; n]. Но у такого типа нет метода get_unchecked_mut(). Он есть у среза на массив [T]Тут нужно понять как в Rust работает оператор точка.
struct S {
a: i32,
f: fn(),
}
impl S {
fn a(&self) {}
}
let s = S { a: 0, f: || {} };
s.a; // Доступ к полю
s.a(); // Вызов метода
(s.f)(); // Вызов функции по указателю, который лежит в поле f
S::a(s);
S::a(&s);
S::a(&mut s);
<S as Deref>::Target::a(S::deref(&s));
<S as DerefMut>::Target::a(S::deref_mut(&mut s));
<<S as Deref>::Target as Deref>::Target::a(<S as Deref>::Target::deref(S::deref(&s)));
<<S as DerefMut>::Target as DerefMut>::Target::a(<S as DerefMut>::Target::deref_mut(S::deref_mut(&mut s)));
// ...
и так пока либо не найдет вариант, который компилируется, либо пока не обнаружит что для очередного типа не реализован трейт Deref.impl<T, const N: usize> Deref for [T; N] {
type Target = [T];
fn deref(&self) -> &[T] {
// ...
}
}
За счет этого все массивы (а так же векторы, у которых тоже Deref к слайсу) получают методы слайса. И по тому же принципу String получает методы str.Что тут делает unsafe код как раз понятноОднозначно понятно, он здесь делает UB так как обращается к памяти владелец которой неизвестен.
далее коммутатор ищет целевой мак адрес в своей таблице, и находит, но как?
как он записывает его в своей таблице? типо switch2:port3?
если он в линке с другим коммутатором?
Или их таблица коммутации обьединяется и нумерация портов второго коммутатора начинается следующего номера, на котором закончились порты первого коммутатора?
Виновата нагрузка
Порой лишь в момент подключения прибора к розетке так же проскакивает крохотная но громкая искра между розеткой и вилкой, которая может кого-то смутить. Например в момент втыкания вилки зарядного устройства ноутбука или вилки блока питания для светодиодов.
В названных случаях искра объясняется практически схемой входной цепи подключаемой нагрузки. На входе у них стоит выпрямитель и конденсатор фильтра, от которого постоянным напряжением (примерно 310-340 вольт в пике) питается высокочастотный импульсный преобразователь.
Так вот, пиковый ток в момент зарядки через выпрямитель от сети пустого входного конденсатора очень велик, он достигает десятков ампер, и встроенный ограничитель «пускового тока» (зачастую на одном лишь термисторе) просто не в состоянии полностью избавить цепь от токового броска в момент втыкания вилки. Если не хотите каждый раз испытывать дискомфорт при втыкании вилки — пользуйтесь переходником (удлинителем) с кнопкой-выключателем.
str
представляет собой неизменяемую последовательность байтов UTF-8 динамической длины где-то в памяти. Поскольку размер неизвестен, его можно обрабатывать только за указателем. Это означает, что str
чаще всего используется как &str
— ссылка на некоторые данные UTF-8, обычно называемые «срезом строки» или просто «срезом». Срез — это просто представление данных, и эти данные могут быть где угодно, например:&'static str.
Данные жестко закодированы в исполняемый файл и загружаются в память при запуске программы.use std::str;
let x: &[u8] = &[b'a', b'b', b'c'];
let stack_str: &str = str::from_utf8(x).unwrap();
String
, если вам требуется владение строковыми данными (например, передача строк в другие потоки или их создание во время выполнения), и используйте &str
, если вам нужно только представление строки. Погорели блочки ко всем роутерам и модемамВот там, держу пари, конденсаторы взорвались с вытеканием электролита.
Как функция index scan в postgresql понимает тип индекса?
и как именно Postgre понимает, какую функцию следует применять