【问题标题】:What does "expected item, found let" mean?“预期项目,找到让”是什么意思?
【发布时间】:2020-11-26 00:35:40
【问题描述】:

我的代码

pub struct MyStorage {
    name: Vec<u8>,
}

impl Storage for MyStorage {
    //let mut name: Vec<u8> = [0x11];
    fn get(&mut self) -> Vec<u8> {
        self.name
    }
}

let my_storage = MyStorage { name = [0x11] };

返回错误

error: expected item, found keyword `let`
  --> src/lib.rs:12:1
   |
12 | let my_storage = MyStorage { name = [0x11] };
   | ^^^ expected item

这是什么意思?

【问题讨论】:

    标签: rust


    【解决方案1】:

    此代码存在许多问题,但您遇到的错误是因为您尝试执行代码而不是从函数内部:

    let my_storage = MyStorage { name = [0x11] };
    

    你需要把它放进去。在这里,我已经添加到main

    pub struct MyStorage {
        name: Vec<u8>,
    }
    
    impl MyStorage {
        fn get(self) -> Vec<u8> {
            self.name
        }
    }
    
    fn main() {
        let my_storage = MyStorage { name: vec![0x11] };
    }
    

    我还必须:

    • 修复向量构造 (vec!)
    • 删除不存在的特征的使用 (Storage)
    • get中更改self的类型
    • = 更改为:

    所有这些,代码编译。

    【讨论】:

    • 那么,我该如何使用那个主函数呢?我特别试图不使用 main 因为我想返回你看到的名字。此外,特征参考确实存在,我只是没有把它放在代码中。特征是存储,对于火车,我实现方法 get 然后使用 my_storage 返回字节向量并使用它运行测试。我应该重新发布我的问题还是编辑它以供您查看整个内容?
    • @Lexka 通常最好生成一个small example 来重现您的问题。为此,您应该在发布之前尽可能多地删除,但我认为您的问题可以暂时离开。
    • @Lexka 您想将姓名返回到哪里?在我的示例中,name 正在从 MyStorage 中删除,并由 get 返回到 main 函数。你的意思是打印到控制台?
    • 嘿Shepmaster。该函数只是为了在另一个函数中使用并返回名称,然后我运行一个断言比较测试。如果它在 main 中工作,它应该在任何功能中工作,我现在不想打印任何东西。无论如何,您是否知道如何生成具有动态大小的随机向量(可能是固定大小开始)。我在网上看了看,还没有找到任何东西。所以,如果你能帮忙解决这个问题,那就砸吧。哦,感谢您之前的帮助,我会调整您的更改。
    • @Lexka 这听起来像是一个单独提出的好问题。提出单独的、措辞恰当的问题有助于未来的搜索者找到他们正在寻找的东西。 you 是否会查看一个带有此标题的问题来弄清楚如何制作动态大小的随机向量? ^_^
    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2020-04-06
    • 1970-01-01
    相关资源
    最近更新 更多