Во время выполнения ссылка - это просто usize
, представляющая адрес некоторых данных в памяти.Книга пытается сказать, что вы не можете взять целое число, а затем обращаться с ним как с адресом, а затем пытаться получить данные, которые там хранятся.Например, это терпит неудачу:
let an_integer: usize = 12345;
let some_value: &bool = an_integer;
С кодом unsafe
вы можете сделать это:
let an_integer: usize = 12345;
// Very dangerous: transmute unsafely converts between any two types as long as they are the same size:
let some_value: &bool = unsafe { std::mem::transmute(an_integer) };
// Less dangerous, but still dangerous:
let some_value: &bool = unsafe { &*(an_integer as *const bool) };