【问题标题】:How to create a variable in Rust module/library?如何在 Rust 模块/库中创建变量?
【发布时间】:2021-07-05 05:10:19
【问题描述】:

为了在 Rust 中练习 crates,我决定创建一个库,其中包含有关不同种类蜗牛的信息,但存在一个问题:我无法使用 let 关键字创建变量。我应该将变量放入某个函数中,还是有什么方法可以在函数外创建变量?或者我应该创建返回有关某些物种而不是变量的信息的函数(例如。也不是 fulica,而是 fulica())。我不喜欢让物种发挥作用的想法,因为 Snails::species::Achatina::fulica 似乎比 Snails::species::Achatina::fulica() 更方便

mod species{
pub struct Animal {
    Superorder: String, Order: String, Suborder:String,Superfamily:String,Family:String,Genus:String,Specie:String
}
pub struct SnailInfo{
    size:(i32,i32), general_info:String,inhabitation:String, full_name: String, zoological:Animal
}
mod Achatina{
    let fulica = SnailInfo{
        size:(12,20),general_info: "Also wnown as giant african land snail, Achatina Fulica is one of the most invasive animals in the world. It originates from the Eastern Africa, but you can find them in the Asia, North America, South America and Australia",
        inhabitation: "Africa, Asia, North America, South America, Australia and some islands", full_name: "Lissachatina fulica",zoological:{Suprorder:Eupelmonata,Order:"Stylomatophora",Suborder:"Achatina",
    Superfamily:"Achatinoidae",Family:"Achatinoidae",Genus:"Lissachatina",Specie:"Lissachatina Fulica"}
    }
    let reticulata = SnailInfo{
        size:(15,25), general_info:"Eatern African snail known for its fast speed of growing and the black head.",inhabitation:"Mostly Zanzibar",full_name:"Achatina Reticulata",
    }
}

错误:| 9 |让 fulica = SnailInfo{ | ^^^ 预期项目

附:我不明白,这段代码还有很多其他错误,但我会自己改进它们

【问题讨论】:

标签: variables rust module


【解决方案1】:

如果你把所有Strings 都变成&'static strs,你可以将你的蜗牛声明为statics:

mod species {
    pub struct Animal {
        Superorder: &'static str,
        Order: &'static str,
        Suborder: &'static str,
        Superfamily: &'static str,
        Family: &'static str,
        Genus: &'static str,
        Species: &'static str,
    }

    pub struct SnailInfo {
        size: (i32, i32),
        general_info: &'static str,
        inhabitation: &'static str,
        full_name: &'static str,
        zoological: Animal,
    }

    mod Achatina {
        // Note that you have to import the types from the containing module.
        use super::{Animal, SnailInfo};

        static FULICA: SnailInfo = SnailInfo{
            size: (12,20),
            general_info: "Also wnown as giant african land snail, Achatina Fulica is one of the most invasive animals in the world. It originates from the Eastern Africa, but you can find them in the Asia, North America, South America and Australia",
            inhabitation: "Africa, Asia, North America, South America, Australia and some islands",
            full_name: "Lissachatina fulica",
            zoological: Animal {
                Superorder: "Eupelmonata",
                Order: "Stylomatophora",
                Suborder: "Achatina",
                Superfamily: "Achatinoidae",
                Family: "Achatinoidae",
                Genus: "Lissachatina",
                Species: "Lissachatina Fulica",
            }
        };
    }
}

我强烈建议您查看the rust book

【讨论】:

  • 谢谢你,我会尽力做你推荐的
猜你喜欢
  • 2011-08-07
  • 1970-01-01
  • 2013-03-14
  • 2020-07-19
  • 2019-11-27
  • 2010-12-30
  • 1970-01-01
  • 2023-01-24
相关资源
最近更新 更多