gpt4 book ai didi

generics - 根据rust函数中的泛型选择常量

转载 作者:行者123 更新时间:2023-12-05 01:04:11 25 4
gpt4 key购买 nike

有没有办法根据泛型类型选择常量的值?

例如,类似(无效的 Rust 代码):

fn foo<T>() {
let b = match T {
u32 => 0x01234567u32,
u64 => 0x0123456789abcdefu64,
_ => panic!()
}
}

fn main() {
foo::<u32>();
foo::<u64>();
}

此函数仅设计为与 u16u32u64 类型一起使用。

最佳答案

你可以使用一个特征的associated constant:

trait MyTrait {
const SOME_CONST: Self;
}

impl MyTrait for u32 {
const SOME_CONST: Self = 0x01234567u32;
}

impl MyTrait for u64 {
const SOME_CONST: Self = 0x0123456789abcdefu64;
}

fn foo<T>() where T: MyTrait {
let _b: T = T::SOME_CONST;
}

fn main() {
foo::<u32>();
foo::<u64>();
}

rust playground 上试试。

关于generics - 根据rust函数中的泛型选择常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72731166/

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