| Crates.io | DPM-Core |
| lib.rs | DPM-Core |
| version | 0.1.2 |
| created_at | 2024-12-14 19:05:53.433596+00 |
| updated_at | 2024-12-15 12:55:15.396704+00 |
| description | DPM-Core is for DPM-Server & DPM-Client. |
| homepage | |
| repository | https://github.com/Derrick-Program/DPM-Core |
| max_upload_size | |
| id | 1483371 |
| size | 28,492 |
此工具庫提供管理套件資訊、以 JSON 格式存取數據,以及與套件儲存庫互動的功能。
Dependency代表一個套件的依賴。
欄位:
name:依賴的名稱。version:依賴的版本。PackageInfo儲存套件的詳細資訊。
欄位:
package_name:套件名稱。file_name:套件檔案名稱。version:套件版本。description:套件描述。hash:套件檔案的雜湊值。dependencies:可選的依賴列表。方法:
new:建立一個新的 PackageInfo 實例。JsonStorage<T>處理 JSON 資料的序列化/反序列化。
方法:
from_json(path: &Path):從 JSON 檔案載入資料。to_json(data: &T, path: &Path):將資料存儲為 JSON 檔案。from_url(url: &str):從 URL 獲取並反序列化 JSON 資料(異步)。from_str_to(file_contents: &str):從字串反序列化 JSON 資料。RepoInfo管理一個套件的儲存庫。
欄位:
packages:一個 HashMap,將套件名稱映射到 PackageBasicInfo。方法:
new():建立一個新的 RepoInfo 實例。has_package(package_name: &str):檢查儲存庫中是否存在指定套件。add_package:向儲存庫中新增一個套件。add_package_with_info:使用 PackageBasicInfo 實例新增一個套件。get_package:根據名稱檢索套件資訊。remove_package:根據名稱移除套件。update_package:更新已存在的套件資訊。PackageBasicInfo簡化版的套件元數據。
欄位:
url:套件檔案的 URL。file_name:套件檔案名稱。version:套件版本。hash:套件檔案的雜湊值。dependencies:可選的依賴列表。use crate::{Dependency, PackageInfo};
let package = PackageInfo::new(
"example_package".to_string(),
"example_file".to_string(),
"1.0.0".to_string(),
"An example package.".to_string(),
"abc123".to_string(),
None,
);
println!("{:?}", package);
use crate::JsonStorage;
use std::path::Path;
let path = Path::new("data.json");
let data = JsonStorage::from_json::<Vec<String>>(path).unwrap();
println!("{:?}", data);
use crate::{RepoInfo, Dependency};
let mut repo = RepoInfo::new();
repo.add_package(
"example_package".to_string(),
"https://example.com/package".to_string(),
"example_file".to_string(),
"1.0.0".to_string(),
"abc123".to_string(),
None,
);
if repo.has_package("example_package") {
println!("Package found.");
}
此工具庫使用以下 Crate:
serde:用於序列化和反序列化。serde_json:用於 JSON 操作。anyhow:用於錯誤處理。reqwest:用於 HTTP 請求。歡迎貢獻!隨時提交 Issue 或 Pull Request。
此專案採用 Apache-2.0 授權條款。詳情請參閱 LICENSE 檔案。