Так что я только начал изучать ржавчину (первые несколько глав "книги") и, очевидно, я настоящий нуб. Я закончил главу «Основы владения» (4) и написал несколько тестовых программ, чтобы убедиться, что я все понял. Кажется, я разбираюсь с основами, но я спрашивал себя, почему неизменные ссылки на типы копий вообще возможны. Я попытаюсь объяснить мои мысли примерами.
Я подумал, что вы, возможно, захотите сохранить ссылку на тип копии, чтобы вы могли проверить его значение позже, вместо того, чтобы иметь копию старого значения, но это можетне может быть, поскольку базовое значение не может быть изменено, пока оно заимствовано.
Самым базовым примером этого будет следующий код:
let mut x = 10; // push i32
let x_ref = &x; // push immutable reference to x
// x = 100; change x which is disallowed since it's borrowed currently
println!("{}", x_ref); // do something with the reference since you want the current value of x
Единственная причина, по которой я могув настоящее время я думаю (насколько мне известно), что они просто существуют, поэтому вы можете вызывать универсальные методы, для которых требуются ссылки (например, cmp
).
Этот код демонстрирует это:
let x = 10; // push i32
// let ordering = 10.cmp(x); try to compare it but you can't since cmp wants a reference
let ordering = 10.cmp(&x) // this works since it's now a reference
Итак, это единственная причина, по которой вы можете создавать неизменные ссылки на типы копий?
Отказ от ответственности:
Я не вижу Просто продолжайте читать книгу как правильный ответ. Однако я полностью понимаю, что если вы скажете что-то вроде Да, вам это нужно для этого и для этого варианта использования (необязательный пример), это будет описано в главе X . Я надеюсь, вы понимаете, что я имею в виду:)
РЕДАКТИРОВАТЬ:
Может быть стоит отметить, я программист C # и не новичок в самом программировании.
РЕДАКТИРОВАТЬ 2:
IНе знаю, технически ли это дубликат этого вопроса , но я не до конца понимаю вопрос и ответ, поэтому надеюсь на более простой ответ, понятный настоящему нубу .