当前位置: 首页 > 知识库问答 >
问题:

Trait'core::ops::Index'未实现

慕铭
2023-03-14

我无法编译我的基本Rust程序:

fn main() {

    let nums = [1, 2];
    let noms = [ "Sergey", "Dmitriy", "Ivan" ];

    for num in nums.iter() {
        println!("{} says hello", noms[num-1]);
    }
}

我在编译时得到这个错误:

   Compiling hello_world v0.0.1 (file:///home/igor/rust/projects/hello_world)
src/main.rs:23:61: 23:72 error: the trait `core::ops::Index<i32>` is not implemented for the type `[&str]` [E0277]
src/main.rs:23         println!("{} says hello", noms[num-1]);

如果我进行显式类型转换,它会工作,但我不确定这是否正确:

println!("{} says hello", noms[num-1 as usize]);

在这种情况下,访问数组元素的正确方法是什么?

关于GitHub、Reddit的相关讨论:

  • https://www.reddit.com/r/rust/comments/2tpefm/unable_to_access_array_elements/
  • https://github.com/rust-lang/rust/issues/21659

共有1个答案

金亦
2023-03-14

您可以使用类型批注来确保数组中的数字具有正确的类型:

fn main() {

    let nums = [1us, 2]; // note the us suffix
    let noms = [ "Sergey", "Dmitriy", "Ivan" ];

    for num in nums.iter() {
        println!("{} says hello", noms[num-1]);
    }
}

这样,您的数组包含usize类型的数量,而不是i32s

一般来说,如果您没有明确说明数字文字的类型,并且如果类型推断无法确定类型应该是什么,它将默认为i32,这可能不是您想要的。

 类似资料:
  • 我克隆了https://gitlab.com/pwoolcoc/soup并运行了示例文件。一切正常,但是当我用与示例文件相同的文件创建一个新项目时,我遇到了一个错误。代码是: 货物档案 错误:

  • OPS

    OPS(Orbeon PresentationServer)是一个开源的基于J2EE平台且是以XML为中心的Web框架.OPS是围绕XHTML, XForms,XSLT,XML pipelines,与Web Services进行构建的.可以利用OPS来开发检索,处理,表达XML数据的应用程序.不像其它流行Web框架如Struts或WebWork,它们都是基于Java对象与JSP的,OPS是基于XM

  • 概述 本文档说明如何安装一个可用于生产的 MongoDB Ops Manager, 以及如何通过 Ops Manager 监控和警告的功能对一个 MongoDB 分片集群进行管理。具体内容包括: MongoDB Ops Manager 4.1 安装 基本监控报警展示 HTTPS 配置 备份和 恢复 本部分操作可以在 AWS Linux 或 RHEL 7 上进行。如果所有操作在 AWS 上,所使用到

  • Ops CLI From version 2.0 onward, ops-cli requires Python3. If you're still using Python2, use ops-cli version <2.0 ops-cli is a python wrapper for Terraform, Ansible and SSH for cloud automation. We u

  • Note: Functions taking Tensor arguments can also take anything accepted by tf.convert_to_tensor. Contents Variables Variables class tf.Variable Variable helper functions tf.all_variables() tf.trainabl

  • Note: Functions taking Tensor arguments can also take anything accepted by tf.convert_to_tensor. Contents Sparse Tensors Sparse Tensor Representation class tf.SparseTensor class tf.SparseTensorValue S