【问题标题】:Constant values in Rust generics [duplicate]Rust 泛型中的常量值
【发布时间】:2021-01-03 21:25:42
【问题描述】:

Rust 语言是否支持类似于 c++ 方式的通用代码中的常量值?似乎overview 语言没有宣传它。在 C++ 中使用常量参数化类型允许根据客户的需要创建具有不同大小的预分配缓冲区的对象(类型如 stlsoft::auto_buffer)。
如果不是,那么在 Rust 中实现类似设计的最佳实践是什么?

【问题讨论】:

    标签: rust rust-obsolete


    【解决方案1】:

    不,这不受类型安全的支持。为此,我们需要类型级别的数字文字,例如最近添加的 GHC。

    但是,您可以使用 Rust 宏。使用宏,您可以创建在任意表达式(包括常量)上参数化的“模板”,这将允许您在这里做您想做的事情。请注意,如果您目前尝试此操作,您可能会发现宏系统中的错误和限制。

    【讨论】:

    • 宏与核心语言相比似乎是外星人。编译时表达式是否有空间成为 Rust 未来函数的普通参数?
    • 我希望通过函数参数化类型。使用宏执行此操作需要在大多数调用站点重新指定函数。或者,我可以将函数作为“值”“存储”在结构内的许多不同位置,以使其可访问。所以对值进行参数化会非常好!
    • 我的问题的解决方案不是对函数进行参数化,而是对实现某种特征的类型(可能是空结构)进行参数化。至少在理论上;我或编译器的复杂性有问题。
    猜你喜欢
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多