在以下代码中:
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
的变量的名称。 .
关于rust - 为什么我们必须借用变量的类型而不是名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69154933/