gpt4 book ai didi

generics - 如何在 Rust 中初始化一个泛型变量

转载 作者:行者123 更新时间:2023-12-03 11:34:42 27 4
gpt4 key购买 nike

T 上的泛型函数中,如何正确创建和初始化 T 类型的变量在安全(或不安全)的 Rust 中? T可以是任何东西。做这种事情的惯用方式是什么?

fn f<T>() {
let t: T = todo!("what to put here?");
}
一种可能的用例可能是使用 T作为交换的临时变量。

最佳答案

Default绑定(bind) T是在泛型函数中构造泛型类型的惯用方式。Default 没有什么特别之处但是,您可以声明一个类似的特征并在您的泛型函数中使用它。
另外,如果一个类型实现了 CopyClone您可以从单个值初始化任意数量的副本和克隆。
评论示例:

// use Default bound to call default() on generic type
fn func_default<T: Default>() -> T {
T::default()
}

// note: there's nothing special about the Default trait
// you can implement your own trait identical to it
// and use it in the same way in generic functions
trait CustomTrait {
fn create() -> Self;
}

impl CustomTrait for String {
fn create() -> Self {
String::from("I'm a custom initialized String")
}
}

// use CustomTrait bound to call create() on generic type
fn custom_trait<T: CustomTrait>() -> T {
T::create()
}

// can multiply copyable types
fn copyable<T: Copy>(t: T) -> (T, T) {
(t, t)
}

// can also multiply cloneable types
fn cloneable<T: Clone>(t: T) -> (T, T) {
(t.clone(), t)
}
playground

关于generics - 如何在 Rust 中初始化一个泛型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66091617/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com