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語法
相關文章
- c++中冒號(:)和雙冒號(::)的用法C++
- Kotlin 函式魔法 - 雙冒號Kotlin函式
- Python中雙冒號的作用Python
- Rust中的into函式和from函式Rust函式
- Rust中的函式指標Rust函式指標
- python函式符號sympy的用法Python函式符號
- CSS 選擇器前面單雙冒號:CSS
- python之函式用法divmodPython函式
- C++中函式後面加const修飾C++函式
- JS 中函式名後面加與不加括號的區別JS函式
- mysql中replace函式的用法MySql函式
- Python 中filter函式用法PythonFilter函式
- 深入理解Java雙冒號(::)運算子的使用Java
- js中關於單引號和雙引號的一點用法JS
- asp.net中關於雙引號和單引號的用法ASP.NET
- C++中函式呼叫的用法C++函式
- python中zip()函式的用法Python函式
- Matlab中erf函式的用法Matlab函式
- Python 中求和函式 sum 用法Python函式
- Java中Split函式的用法技巧Java函式
- matlab中sort函式的用法Matlab函式
- 學習Rust 函式Rust函式
- Rust 函式有哪些Rust函式
- PyThon range()函式中for迴圈用法Python函式
- Python中的split()函式的用法Python函式
- python 中 print 函式用法總結Python函式
- Python 中的map、reduce函式用法Python函式
- c標準庫中qsort函式用法函式
- Translate函式用法函式
- abs函式用法函式
- group by分組函式之rollup與cube用法函式
- 如何在 Deno 應用程式中呼叫 Rust 函式Rust函式
- ascii函式和substr函式的用法ASCII函式
- ES 6 中的箭頭函式及用法函式
- C++中push_back()函式的用法C++函式
- Python中典型內建函式的用法Python函式
- Python中enumerate函式用法詳解Python函式
- oracle中函式to_char()的用法介紹Oracle函式