2024-06-16 01:38:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								Rust Library
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								================
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 04:48:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								>  專案共用核心
  
						 
					
						
							
								
									
										
										
										
											2024-06-16 01:38:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 04:48:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								### 建立專案的指令
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								cargo new my_project_name
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 01:38:23 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 04:48:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								### 推薦項目的目錄結構
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								my_project/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								├── Cargo.toml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								├── src/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│   ├── main.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│   ├── lib.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│   ├── common/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│   │   ├── mod.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│   │   ├── config.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│   │   ├── errors.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│   │   ├── utils.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│   │   ├── logger.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│   │   └── types.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│   └── some_other_module/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│       ├── mod.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								│       └── other.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								└── tests/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								├── common_tests.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								└── other_tests.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Current modules
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| module                       | latest version |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|------------------------------|----------------|
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| [config ](conf )               | v1.0.0         |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## 如何新增Module
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								>  假設新增一個 `module`
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								>`utils/first_utils/first`
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### 初始化
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								再一路的路徑底下的 mod.rs 新增資料匣或檔案名稱
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								1.  src/ 下 lib.rs 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```rust
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								pub mod utils;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								2.  utils/ 下 mod.rs 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```rust
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								pub mod first_utils;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								3.  first_utils/ 下 mod.rs 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```rust
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								pub mod first;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								這樣 first 裡面的 pub 函數就會被公開了
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								p.s 建議測試覆蓋率盡量達到80%
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								------------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## 如何使用私有Module
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 09:53:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								1.  在新項目底下加入 .cargo 目錄 並新增 config.toml 檔案 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								my_project/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ├── Cargo.toml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ├── src/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   │   ├── main.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   │   └── utils/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   │       └── first_utils/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   │           └── first.rs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   └── .cargo/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   └── config.toml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 04:48:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 09:53:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								2.  使用下列指令執行 
						 
					
						
							
								
									
										
										
										
											2024-06-16 04:48:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 09:53:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								mkdir -p .cargo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								echo "[net]\ngit-fetch-with-cli = true" > .cargo/config.toml
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 04:48:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 09:53:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								3.  在 cargo.toml 內加入下列指令,可指定分隻或者 tag 都可 
						 
					
						
							
								
									
										
										
										
											2024-06-16 04:48:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 09:53:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```toml
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[dependencies]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								utils = { git = "ssh://git@git.30cm.net/Wanderland/library-rusttgeoip.git", branch = "main" }
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 04:48:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 09:53:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								### 如果未產生 ssh key 連線至你的 git 的話請使用下列方式
  
						 
					
						
							
								
									
										
										
										
											2024-06-16 04:48:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								產生ssh-key
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								請參考 [github ssh ](https://docs.github.com/en/authentication/connecting-to-github-with-ssh ) , [gitlab ssh ](https://docs.gitlab.com/ee/user/ssh.html )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								add ssh key to the ssh-agent
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								請參考 [Adding your SSH key to the ssh-agent ](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#adding-your-ssh-key-to-the-ssh-agent )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$ eval "$(ssh-agent -s)"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								>  Agent pid 59566
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$ touch ~/.ssh/config
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 09:53:50 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								Host code.30cm.net
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  Hostname code.30cm.net
							 
						 
					
						
							
								
									
										
										
										
											2024-06-16 04:48:34 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  User igs170911
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  IdentityFile ~/.ssh/id_rsa
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$ ssh-add --apple-use-keychain ~/.ssh/id_ed25519
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```