Rust中Turbofish之函式後面雙冒號(::)用法
RUST中的語法,Turbofish通常用於在表示式中為泛型型別、函式或方法指定引數。
1. Turbofish語法
大部分時候當涉及到泛型時,編譯器可以自動推斷出泛型引數:
// v must be a Vec<T> but we don't know what T is yet
let mut v = Vec::new();
// v just got a bool value, so T must be bool!
v.push(true);
// Debug-print v
println!("{:?}", v);
但是有的時候,編譯器需要一些幫助。例如,如下如果省略最後一行的列印,會得到一個編譯錯誤:
let v = Vec::new();
// ^^^^^^^^ cannot infer type for `T`
//
// note: type annotations or generic parameter binding required
println!("{:?}", v);
我們要麼可以使用一個型別註解來解決它:
let v: Vec<bool> = Vec::new();
println!("{:?}", v);
要麼通過一個叫做turbofish(::<>)
的語法來繫結泛型引數T:
let v = Vec::<bool>::new();
println!("{:?}", v);
2. 使用方法
需要為泛型函式,方法,結構或列舉指定具體型別的情況。
在型別定義中使用IDENT,而在表示式上下文中使用IDENT::來指定泛型引數的型別。
標準庫裡面的std::mem::size_of()函式使用方法如下:
pub const fn size_of<T>() -> usize
使用方法如下:
std::mem::size_of::<u8>(); //u8的位元組數
std::mem::size_of::<u32>(); //u32的位元組數
std::mem::size_of::<i32>(); //i32的位元組數
參考:
The Rust Programming Language
Where to put the turbofish
RUST中的turbofish語法
相關文章
- Python中雙冒號的作用Python
- Rust中的into函式和from函式Rust函式
- python函式符號sympy的用法Python函式符號
- JavaSE面試題之基本IO流及面試官寫了個雙冒號考試答案[圖]Java面試題
- Rust中的函式指標Rust函式指標
- python中zip()函式的用法Python函式
- Matlab中erf函式的用法Matlab函式
- CSS 選擇器前面單雙冒號:CSS
- C++中函式後面加const修飾C++函式
- MATLAB音訊訊號處理(一):函式簡易用法(audioread,sound函式)Matlab音訊函式
- Python中的split()函式的用法Python函式
- PyThon range()函式中for迴圈用法Python函式
- C++中函式呼叫的用法C++函式
- abs函式用法函式
- JS 中函式名後面加與不加括號的區別JS函式
- Rust 函式有哪些Rust函式
- 學習Rust 函式Rust函式
- 深入理解Java雙冒號(::)運算子的使用Java
- Python range() 函式用法Python函式
- SSD-函式用法函式
- GetModuleFileName函式的用法函式
- Instr函式的用法函式
- SQL LEN()函式用法SQL函式
- Python排序函式用法Python排序函式
- python程式設計之slice與indices函式用法Python程式設計函式
- Python函式引數前的單星號(*)和雙星號(**)的作用Python函式
- C++中push_back()函式的用法C++函式
- python中upper函式的用法是什麼?Python函式
- ES 6 中的箭頭函式及用法函式
- 如何在 Deno 應用程式中呼叫 Rust 函式Rust函式
- QT之靜態函式傳送訊號QT函式
- PHP 自定義函式用法及常用函式集合PHP函式
- 【Oracle的NVL函式用法】Oracle函式
- string 函式的基本用法函式
- C++ replace() 函式用法C++函式
- fcntl函式用法詳解函式
- Kotlin中的also、let、run、with、apply函式的用法KotlinAPP函式
- Rust 問答之如何獲取 main 函式的引數RustAI函式