为什么我们必须借用类型而不是变量名

Why must we borrow the type and not the name of the variable

在下面的代码中:

struct Book {
    pages: i32,
    rating: i32,
}

fn display_page_count(book: &Book) {
    println!("Pages = {:?}", book.pages);
}

fn display_rating(book: &Book) {
    println!("Rating = {:?}", book.rating);
}

fn main() {
    let book = Book {
    pages: 5,
    rating: 9,
    };
    display_page_count(&book);
    display_rating(&book);
}

为什么我们写fn display_page_count(book: &Book)而不是fn display_page_count(&book: Book)?对我来说,book是我们以后要借用的数据,Book只是一个类型(这里是一个struct),所以我不明白为什么我们要借用类型而不是变量或参数。谁能告诉我为什么我错了?

fn display_rating(book: &Book) 声明中,book 是类型为 &Book 的变量的名称。

使用 fn display_rating(book: Book) 符号意味着所有权被传递给函数并且不返回它,它不能在外部范围内使用。

book: &Book表示我们正在使用对变量的引用。在这种情况下 book 可以有任何你想要的名字,因为它只是类型为 &Book.

的变量的名字

因为这是声明变量的名称,而不是标记类型。

声明时,所有变量必须是纯名称,名称不能是引用。

变量前&& mut标记的情况,只是标记变量的类型,而不是名称。

这是因为您刚刚为对象命名。更改的是对象的类型,而不是名称。