本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。