variables - 如何在 Rust 模块/库中创建变量?
问题描述
为了在 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{ | ^^^ 预期项目
PS我不明白,这段代码中还有很多其他错误,但我会自己改进它们
解决方案
如果将所有这些String
s 转换为&'static str
s,则可以将蜗牛声明为static
s:
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",
}
};
}
}
我强烈建议您查看rust book。
推荐阅读
- c# - 从逆向工程的 EF Core DbContext 创建新数据库
- list - 在 prolog 中表示表达式
- swift - SwiftUI 中带有图像和文本的 macOS 工具栏项
- node.js - 用于包装静态前端的 Node.Js 应用程序的 Docker Compose 文件
- docker - github action docker 数据库迁移失败
- java - 从多个 JSON 对象中获取密钥
- entity-framework-core - EF Core 3.1 - 从不同实体构建树结构
- xamarin - Xamarin - iOS MFMailComposeViewController.CanSendMail 导致“执行本机代码时获得 segv”
- reactjs - 隐藏多选选项 - 反应选择
- javascript - jQuery hover() 和委托