是否可以使用泛型的类型参数来控制数组的大小?

2024-03-01

以下内容仅用作示例,并非有效的 Rust 代码。

struct Vec<T: Sized, Count> {
    a: [T; Count]
}

类似的事情在 C++ 模板中是可能的,但我还没有在 Rust 中看到它。


铁锈1.51

Use 常量泛型:

struct Vec<T: Sized, const COUNT: usize> {
    a: [T; COUNT],
}

之前的版本

RFC 2000 — const 泛型 https://rust-lang.github.io/rfcs/2000-const-generics.html引入对此的支持并跟踪进度问题#44580 https://github.com/rust-lang/rust/issues/44580.

如果你看一下 Rust 的设计,你会发现它首先解决了最难的问题(内存安全、无数据竞争),但还有很多“不完整”的领域(与可能的问题相比)达到)。

特别是,通用结构和功能一开始有些有限:

  • 缺乏高等种类(HKT)
  • 缺少非类型参数 => 数组是特殊情况,实现数组的特征是一个已知问题 https://github.com/rust-lang/rust/issues/7622,解决方法是针对几个不同的维度实现它
  • 缺少可变参数 => 元组是特殊情况,并且为所有元组实现特征同样困难

目前,并非所有这些都得到实施,不是因为它们不受欢迎,而是因为时间不够。 Rust 1.0 的想法不是发布一个不会进化的最终产品,而是一个稳定的起点;一些或也许全部都会来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使用泛型的类型参数来控制数组的大小? 的相关文章

  • 如何固定板条箱的间接依赖关系?

    我的项目 A 依赖于库 B 而库 B 又依赖于库 C 库 B 将依赖版本设置为 任何 所以 Cargo 将下载最新版本的 C 我如何指示 Cargo 使用特定版本的库 C 构建库 B 我正在尝试建立iron https github com
  • 为外国类型实现外国特征[重复]

    这个问题在这里已经有答案了 因此 我认为出于前向兼容性考虑 以防止在库中添加进一步的特征实现破坏使用类型特征的地方 有理由禁止孤立特征实现 并且它可能使编译变得更加困难 但我想知道 Rust 社区认为哪种解决方法是最理想的 以防万一这还不够
  • 与整数纹理进行 Alpha 混合以进行对象拾取

    问题描述 你好 在我们的 WebGL 应用程序中 我们正在绘制许多 甚至数十万 形状 并且我们想要发现当前鼠标位于哪个形状 我正在寻找一种有效的方法 Details 形状定义为有符号距离函数 https en wikipedia org w
  • 强制 io::stdio 和 BufReader 之间的 BufRead 特征兼容性

    我正在尝试输入双关语io stdio实例和一个BufReader包装一个文件 以便我可以编写假设缓冲输入源的代码 我尝试了几种尝试投射的变体io stdio to a BufRead类型和所有都因以下一种或多种变体而失败 error mis
  • 将 self 的生命周期与方法中的引用联系起来

    I have derive Debug struct Foo lt a gt x a i32 impl lt a gt Foo lt a gt fn set mut self r a i32 self x r fn main let v 5
  • 由于递归结构中存在冲突的要求,无法推断适当的生命周期

    当我尝试编译这段代码时 pub struct Context lt a gt pub outer Option lt a mut Context lt a gt gt impl lt a gt Context lt a gt pub fn
  • Rust:根目录中没有“模块”

    当我跑步时use crate feed in src cmdline rs我希望导入src feed rs 但事实并非如此 相反我得到 error E0432 unresolved import crate feed gt src cmdl
  • bool 是否保证为 1 个字节?

    The Rust 文档 https doc rust lang org reference html primitive types是模糊的bool s size 它是否保证为 1 个字节 还是像 C 中那样未指定 fn main use
  • 如何使用diesel-rs选择色谱柱的子集?

    我现在花了几个小时的时间来查询表的可用列的子集以及在其中包含计算 我知道这不是在选择查询中执行计算的最佳方式 但现在 我只是在开发一个原型 它应该是可行的 我在用diesel rs作为后端实现中所有数据库操作的 ORM 数据将存储在 Pos
  • 检查自定义结构的相等性

    我正在尝试检查两个 功能相同 结构的相等性 derive PartialEq Debug pub struct TypeA lt a gt a str derive PartialEq Debug pub struct TypeB lt a
  • 如何为 Rust 测试中的所有测试函数创建一个具有作用域/生命周期的变量?

    我有一个在深入测试细节之前初始化变量的测试 我想使用相同的变量进行第二次测试 而不是重复初始化代码 test fn test one let root Path new data the rest of the test test fn t
  • 如何使用同级/相邻 Rust 文件中的结构?

    我正在尝试编辑具有以下结构的 Rust 项目 src iface ip rs src iface tun rs 我想从以下位置调用东西ip rs inside tun rs So on tun rs我补充道 use iface ip 但它说
  • Rust 模式匹配如何确定绑定变量是引用还是值?

    use crate List Cons Nil derive Debug struct Foo derive Debug enum List Cons i32 Foo Nil impl List fn tail self gt Option
  • 具有指向其自身数据的切片的结构

    我有一个结构 struct Foo lt a gt buf u8 64 slice a u8 该切片应该指向buf结构体的字段 有什么方法可以构造这样的结构吗 就像是 impl lt a gt Foo lt a gt fn new gt F
  • 有没有一种方法可以“展平”Rust 中的(反)序列化枚举?

    我有一个由其他枚举组成的枚举 类似于以下内容 serde为简洁起见 省略了派生和注释 enum Main A SubA B SubB enum SubA X1 X2 X3 enum SubB Y1 Y2 Y3 我很想能够使用serde反序列
  • 用于解析 Rust 中的匹配臂的递归宏

    我正在尝试编写一个宏来将一组规则扩展为执行标记匹配的代码 但无法在不导致宏扩展错误的情况下生成正确的代码 我知道我可以通过其他方式处理这个问题 但这里的关键问题不是如何解析令牌 而是如何编写一个可以使用匹配臂递归扩展令牌树的宏 这个想法是我
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • Rust 中声明变量的宏?

    在 C 中 可以编写声明变量的宏 如下所示 define VARS a b c int a b c 当然 这不是您通常想要做的事情 在实际的例子中 我希望开始工作 但它并不那么简单 define VARS data stride a b c
  • Rust 柴油有条件过滤查询

    我正在尝试在一个项目中使用柴油 并且我想要一个 可过滤 类型 这个想法是你可以去 api foo id 10 bar 11它会返回一个结构体Foo struct Foo id Option
  • 特征实施尺寸

    我知道特征和切片的大小是不确定的 即在编译时不可能知道它们的大小 例如任何类型都可以实现特征 但该类型可能无法调整大小 然而 这个示例代码是否意味着每个实现特征的类型Foo需要实施Sized too trait Foo Sized stru

随机推荐

  • Scala中如何从内部类引用外部对象

    考虑这段代码 这是一种类型安全单元 abstract class UnitsZone type ConcreteUnit lt AbstractUnit abstract class AbstractUnit val qty Int SOM
  • simplexml_load_file 不起作用

    我下面有这段代码 它在我的远程托管服务器上运行良好 但由于某种原因不能在我的本地 Linux 机器上运行 我也尝试使用 file get contents 来获得宁静的服务 但它也返回 false 有谁知道为什么会发生这种情况 谢谢 xml
  • 使用“devtools::install_github”和克隆 GitHub 存储库有什么区别?

    I used devtools install github 在 R 中安装存储库 并使用以下命令安装了存储库git clone在终端 这两条路线有什么区别 到目前为止 我明白我可以使用library package 在 R 中 并将加载该
  • Angular 5中如何从父组件继承子组件中的CSS样式

    我有一个父组件 其中有一个子组件 父组件有一些 css 类 子组件扩展了它们 我尝试使用 host 查看文档 但似乎无法使其正常工作 子组件 div class table row body div class table cell bod
  • 对指针数组进行排序

    我是否正确地认为 为了对指针数组进行排序 将指针视为 int 是可以的 例如 qsort ptrs n sizeof void int cmp 我想对 ptr 进行排序以确定是否存在重复项 而不管指针指向的类型是什么 因此 qsort 是执
  • 如何调用shell脚本来启动后端Java进程?

    完成 Jenkins 任务后 我使用 Jenkins 的后置条件配置部分执行 Linux shell 脚本 这个 Linux shell 脚本想要在后端启动备用服务 并且不能导致 Jenkins 暂停 我尝试使用 nohup 等 但不起作用
  • 3D 数组作为纹理在 CUDA 中写入和读取

    由于我正在编程的算法的性质 我需要用一些特定的数学写入 填充 3D 矩阵 然后从该矩阵 在单独的内核中 读取作为 3D 线性插值纹理 由于纹理是一种读取模式 我假设我可以以某种方式在绑定到纹理的全局内存中写入 并从中单独读取 而不需要双倍内
  • 如何制作一个在主线程中触发事件的 C# 计时器?

    长话短说 我需要 Net 中的一个精确计时器 精度以毫秒为单位 这意味着 如果我告诉它在 10 毫秒过去时触发一个事件 它必须这样做 1 毫秒 内置的 Net Timer 类的精度似乎为 16ms 这对于我的应用程序来说是不可接受的 我找到
  • 避免使用元类继承生成的类属性

    我正在考虑使用元类自动将子类添加到父类以进行 链接 然而 从父类继承这些属性会把事情搞砸 有什么好的方法可以避免这种情况吗 class MetaError type def init cls name bases attrs for bas
  • 尽管提示没有任何价值,但谷歌身份验证始终要求授权

    从 Google OAuth 连接用户后 当该用户希望在需要选择其 Google 帐户的下一个会话期间重新连接时 将再次请求许可 根据文档 https developers google com identity protocols Ope
  • 删除包含子实体的实体时出现微风错误

    我使用 Entity Framework Code First Durandal Breeze 从事一个项目 我有这些实体模型 public class Packing Key public int Id get set public st
  • Xcode 7 UI 测试,录制按钮呈灰色

    我正在尝试使用 Xcode 7 将 UI 测试添加到我现有的项目中 但是 UI 测试记录按钮始终呈灰色 我在这里缺少什么 我尝试重新启动 Xcode 清理并重建项目并添加新的 UI 测试目标 还有其他人经历过同样的行为吗 要启用红色按钮 您
  • 这个 LogCat 错误是什么意思?

    我正在尝试运行 E3roid 示例的示例 除非我这样做 否则我会强制关闭页面 这是 logcat 错误 通过查看 您能告诉我这是什么意思以及问题出在哪里吗 02 28 20 31 51 429 D AndroidRuntime 1779 S
  • 将数字格式化为特定的 QString 格式

    我有一个关于将十进制数格式化为某种 QString 格式的问题 基本上 我的程序中有一个可以接受任何值的输入框 我希望它将这个框中的值转换为格式 05 30 基于该值 该值将限制为 99 99 一些例子包括 2 gt 00 02 1 5 g
  • 什么时候必须在模块中使用 CONTAINS?

    我定义了以下模块 module data model 2 implicit none TYPE DEFINITION type type1 record integer month integer day integer year inte
  • 禁用右键对安全性有影响吗?

    在银行网站或其他网站上 我看到他们禁用了右键单击 禁用右键单击是否会使站点在客户端方面更加安全 这是一个好的一般做法吗 不 禁用网站中的右键单击是不好的 详情请点击下方 http www sitepoint com dont disable
  • 为什么要在 include 或 include_once 语句中使用 dirname(__FILE__) ?

    我见过这个 为什么我需要这样做 为什么我要麻烦地获取目录名 然后将其与目录分隔符和新文件名连接起来 上面的代码不等于 PHP 文档 http php net manual en function include php says 根据给定的
  • 无法打开文件“Pods.xcconfig”,因为没有该文件

    如何解决这个问题 我已经从 Git 存储库下载了 iOS 项目 当我尝试构建时 出现错误 Check dependencies The file Pods xcconfig couldn t be opened because there
  • TextInputLayout浮动标签显示缓慢

    我已经申请了安卓TextInputLayout 它工作正常 但是当出现文本输入布局时 编辑文本变得非常慢 我也改变了提示颜色 但它不起作用 布局XML
  • 是否可以使用泛型的类型参数来控制数组的大小?

    以下内容仅用作示例 并非有效的 Rust 代码 struct Vec