簡體   English   中英

Rust:引用如何成為類型?

[英]Rust: How can a reference be a type?

所以我要問的是,返回類型 &std::vec::Vec 和 std::vec::Vec 之間有什么區別? 只是好奇。 如果我引用某些東西,我不是在創建新類型。 它仍然保留其數據和結構,因此保留其類型。 但由於某種原因,我收到此錯誤:

   error[E0308]: mismatched types
   --> src/cam.rs:170:3
    |
168 |     pub fn index2d(self, x: usize, y: usize) -> Vec<u8> {
    |                                                 ------- expected `std::vec::Vec<u8>` because of return type
169 |         let c = &self.pyxels[y*WIDTH+x];
170 |         c
    |         ^
    |         |
    |         expected struct `std::vec::Vec`, found reference
    |         help: try using a conversion method: `c.to_vec()`
    |
    = note: expected type `std::vec::Vec<u8>`
               found type `&std::vec::Vec<u8>`
                           ^ (umm excuse me?)

那個小符號 (&) 似乎真的很重要,我不知道為什么。

如果我引用某些東西,我不是在創建新類型。

如果“創建新類型”的意思是“創建不同類型的對象” ,那么是的,這正是您正在做的。 對事物的引用不是那個事物。 這類似於有房子和有一張寫有房子地址的紙條之間的區別。

盡管 Rust 的語法通常使通過引用訪問對象看起來與直接訪問該對象相同。

let v: Vec<u8> = Vec::new();
let vr = &v;

assert_eq!(v.len(), rv.len());

所以也許這就是你困惑的原因?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM