網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
java項(xiàng)目中用maven管理代碼時(shí),如果遇到大型工程,一般會(huì)拆分成不同的模塊,比如spring-mvc中,通常會(huì)按model, view, controller建3個(gè)模塊,然后根據(jù)一定的依賴(lài)關(guān)系進(jìn)行引用。這個(gè)概念在Rust中是通用的,只不過(guò)maven換成了cargo,而模塊變成了crate,看下面的例子。
一、目錄結(jié)構(gòu)
.
├── Cargo.toml
├── controller
│ ? ├── Cargo.toml
│ ? └── src
│ ? ? ? └── main.rs
├── model
│ ? ├── Cargo.toml
│ ? └── src
│ ? ? ? └── lib.rs
└── view
? ? ├── Cargo.toml
? ? └── src
? ? ? ? └── lib.rs
根目錄下的Cargo.toml,類(lèi)似maven中的父pom.xml,可以在其中聲明子"模塊":(注:為了避免與rust中的mod"模塊"產(chǎn)生混淆,后面還是用crate來(lái)稱(chēng)呼“子模塊”)
[workspace] members=[ ? ? "model", ? ? "view", ? ? "controller" ]
這里聲明了1個(gè)所謂的workspace,其中有3個(gè)成員,即3個(gè)目錄對(duì)應(yīng)的crate
二、子crata中的Cargo.toml聲明
假設(shè)上面的工程結(jié)構(gòu)中:
- model不依賴(lài)其它c(diǎn)rate
- view依賴(lài)model
- controller依賴(lài)view及model
則這3個(gè)crate中的Cargo.toml文件,可以這樣寫(xiě):
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] # 不依賴(lài)其它c(diǎn)rate,此節(jié)點(diǎn)為空即可
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] # 聲明依賴(lài)model model = {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依賴(lài)聲明,就可以來(lái)寫(xiě)代碼了,參見(jiàn)下面的示例:
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
假設(shè)在model中定義了2個(gè)結(jié)構(gòu)體(即:OOP中的class)
3.2 view/src/lib.rs
//使用model中的User類(lèi) 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); }
運(yùn)行結(jié)果:
User { username: "test", password: "abcde" }
Order { orderno: "20211244123" }
User { username: "abcd", password: "*123*J" }
原文鏈接:https://www.cnblogs.com/yjmyzz/p/15586087.html
相關(guān)推薦
- 2022-07-13 Docker的安裝部署與優(yōu)化
- 2024-04-08 nvm 在 Windows 上的使用
- 2023-10-11 hutool工具類(lèi) | huTool的基本使用
- 2023-05-16 Golang的鎖機(jī)制使用及說(shuō)明_Golang
- 2023-03-21 C++將字符串格式化的幾種方式總結(jié)_C 語(yǔ)言
- 2022-08-15 springboot切換為redis緩存
- 2023-07-22 macos通過(guò)homebrew安裝多版本node
- 2023-12-16 SpringBoot 配置文件使用@ @取值
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支