gpt4 book ai didi

rust - EnumConstant 的倒数作为 u32

转载 作者:行者123 更新时间:2023-12-03 11:26:29 25 4
gpt4 key购买 nike

说我有

enum Grades { A, B, C, D, E, F }

然后我可以很容易地使用每个等级的关联值

Grades::C as u32

不过,似乎没有相反的办法。我知道,一般来说,这将是一个部分函数,​​例如

42 as Grades

没有意义。但是,执行此操作的惯用方法是什么?是吗

impl From<u32> for Grades { ... }

panic ! 如果参数无效?甚至

impl From<u32> for Option<Grades> { ... }

一个相关的问题,是否有类似枚举特征的东西?由于经常需要在整数和枚举之间进行转换,因为(据我该死的初学者知识)显然没有任何东西可以提供 Haskells Enum 和 Bounded 类型类的功能。因此,如果我需要一系列 B..E 等级,或下一个等级 (succ B) 或上一个等级 (pred E),我觉得运气不好。

(suggested question 没有完全回答我的问题,因为我想到我首先需要此功能的更深层原因通常是“缺少”枚举功能 - 即从Haskell 程序员的立场。这就是第二部分的全部内容。)

最佳答案

尽管最简单的解决方案可能是 enum_primitive crate(已经有人建议),但您自己实现它的惯用方法是 TryFrom来自标准库的特性。这也非常接近您在问题中已经提出的建议。唯一的区别是,这会返回一个 Result,这样您就不必在输入错误时 panic !

关于rust - EnumConstant 的倒数作为 u32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64270057/

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