本文簡要介紹rust語言中 Primitive Type tuple
的用法。
有限異構序列,(T, U, ..)
。
讓我們依次介紹其中的每一個:
元組是有限。換句話說,元組有長度。這是一個長度元組3
:
("hello", 5, 'c');
'Length'在這裏有時也稱為'arity';每個不同長度的元組都是不同的、不同的類型。
元組是異構的。這意味著元組的每個元素都可以有不同的類型。在上麵的那個元組中,它具有以下類型:
(&'static str, i32, char)
元組是一個序列。這意味著可以按位置訪問它們;這被稱為'tuple indexing',它看起來像這樣:
let tuple = ("hello", 5, 'c');
assert_eq!(tuple.0, "hello");
assert_eq!(tuple.1, 5);
assert_eq!(tuple.2, 'c');
元組的順序性質適用於其各種特征的實現。例如,在 PartialOrd
和 Ord
中,依次比較元素,直到找到第一個不相等的集合。
有關元組的更多信息,請參閱the book。
特征實現
如果元組中的每個類型都實現了以下特征之一,那麽元組本身也實現了它。
- std::clone::Clone
- std::marker::Copy
- std::cmp::PartialEq
- std::cmp::Eq
- std::cmp::PartialOrd
- std::cmp::Ord
- std::fmt::Debug
- std::default::Default
- std::hash::Hash
由於 Rust 類型係統的臨時限製,這些特征僅在元組 12 或更少的元組上實現。將來,這種情況可能會改變。
例子
基本用法:
let tuple = ("hello", 5, 'c');
assert_eq!(tuple.0, "hello");
當您想要返回多個值時,元組通常用作返回類型:
fn calculate_point() -> (i32, i32) {
// Don't do a calculation, that's not the point of the example
(4, 5)
}
let point = calculate_point();
assert_eq!(point.0, 4);
assert_eq!(point.1, 5);
// Combining this with patterns can be nicer.
let (x, y) = calculate_point();
assert_eq!(x, 4);
assert_eq!(y, 5);
相關用法
- Rust type_name用法及代碼示例
- Rust take_hook用法及代碼示例
- Rust try用法及代碼示例
- Rust try_exists用法及代碼示例
- Rust transmute_copy用法及代碼示例
- Rust take用法及代碼示例
- Rust thread_local用法及代碼示例
- Rust try_from_fn用法及代碼示例
- Rust todo用法及代碼示例
- Rust type_name_of_val用法及代碼示例
- Rust transmute用法及代碼示例
- Rust temp_dir用法及代碼示例
- Rust UdpSocket.set_multicast_loop_v6用法及代碼示例
- Rust i64.overflowing_add_unsigned用法及代碼示例
- Rust Box.downcast用法及代碼示例
- Rust BTreeMap.last_key_value用法及代碼示例
- Rust str.make_ascii_uppercase用法及代碼示例
- Rust u128.checked_pow用法及代碼示例
- Rust usize.wrapping_mul用法及代碼示例
- Rust AtomicU8.fetch_sub用法及代碼示例
- Rust PanicInfo.payload用法及代碼示例
- Rust MaybeUninit.assume_init_mut用法及代碼示例
- Rust String.try_reserve用法及代碼示例
- Rust Mutex.new用法及代碼示例
- Rust f32.exp用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Primitive Type tuple。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。