详解Rust中的workspace
目录
- 一、目录结构
- 二、子crata中的Cargo.toml声明
- 三、代码引用
- 3.1 model/src/lib.rs
- 3.2 view/src/lib.rs
- 3.3 controller/src/main.rs
一、目录结构
.根目录下的Cargo.toml,类似maven中的父pom.xml,可以在其中声明子"模块":(注:为了避免与rust中的mod"模块"产生混淆,后面还是用crate来称呼“子模块”)
├── Cargo.toml
├── controller
│├── Cargo.toml
│└── src
│└── main.rs
├── model
│├── Cargo.toml
│└── src
│└── lib.rs
└── view
├── Cargo.toml
└── src
└── lib.rs
[workspace]members=["model","view","controller"]
这里声明了1个所谓的workspace,其中有3个成员,即3个目录对应的crate
二、子crata中的Cargo.toml声明 假设上面的工程结构中:
- model不依赖其它crate
- view依赖model
- controller依赖view及model
model/Cargo.toml
[package]name = "model"version = "0.1.0"edition = "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]# 不依赖其它crate,此节点为空即可
【详解Rust中的workspace】view/Cargo.toml
[package]name = "view"version = "0.1.0"edition = "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]# 声明依赖modelmodel = {path = "../model"}
controll/Cargo.toml
[package]name = "controller"version = "0.1.0"edition = "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]model = {path = "../model"}view = {path = "../view"}
三、代码引用 有了前面的各crate依赖声明,就可以来写代码了,参见下面的示例:
3.1 model/src/lib.rs
#[derive(Debug)]pub struct User{pub username:String,pub password:String}#[derive(Debug)]pub struct Order{pub orderno:St
假设在model中定义了2个结构体(即:OOP中的class)
3.2 view/src/lib.rs
//使用model中的User类use model::User; pub fn get_login_info(name:String,pass:String)->User{User{username:name,password:pass}}
3.3 controller/src/main.rs
use view::get_login_info; use model::{User,Order}; fn main() {let mut u = get_login_info(String::from("test"), String::from("123456")); u.password = String::from("abcde"); println!("{:?}", u); let o = Order{orderno:String::from("20211244123")}; println!("{:?}",o); let u1 = User{username:String::from("abcd"),password:String::from("*123*J")}; println!("{:?}",u1); }
运行结果:
User { username: "test", password: "abcde" }到此这篇关于Rust中的workspace的文章就介绍到这了,更多相关Rust workspace内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
Order { orderno: "20211244123" }
User { username: "abcd", password: "*123*J" }
推荐阅读
- Android表格自定义控件使用详解
- Node.js基础入门之模块与npm包管理器使用详解
- Node.js基础入门之使用方式及模块化详解
- 《手把手教你》系列基础篇(七十八)-java+|《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)
- Java的jstack命令使用详解
- 腾讯技术分享(GIF动图技术详解及手机QQ动态表情压缩技术实践)
- retinaface代码讲解_Pytorch-RetinaFace 详解
- 深度学习|深度学习 --- 卷积神经网络CNN(LeNet-5网络详解)
- Lenet|Lenet -5 神经网络详解
- 人工智能|pytorch中的激励函数(详细版)