2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Publié pour la première fois leLe blog personnel d'Enaium
Nous devons déclarer plusieurs structures pour stocker les informations sur les ressources du jeu, puis nous devonsjson
Le fichier est analysé dans ces structures, nous devons donc ajouterserde
compter sur.
serde = { version = "1.0", features = ["derive"] }
Lié aux ressourcesasset.rs
use serde::Deserialize;
use std::collections::HashMap;
#[derive(Deserialize)]
pub struct AssetIndex {
pub id: String,
pub sha1: String,
pub size: u32,
#[serde(alias = "totalSize")]
pub total_size: u32,
pub url: String,
}
#[derive(Deserialize)]
pub struct Index {
pub objects: HashMap<String, Object>,
}
#[derive(Deserialize)]
pub struct Object {
pub hash: String,
pub size: u32,
}
Corps du jeuversion.rs
use serde::Deserialize;
use crate::{asset::AssetIndex, library::Library};
pub type Libraries = Vec<Library>;
#[derive(Deserialize)]
pub struct Version {
#[serde(alias = "assetIndex")]
pub asset_index: AssetIndex,
pub downloads: Download,
pub id: String,
pub libraries: Libraries,
#[serde(alias = "mainClass")]
pub main_class: String,
#[serde(alias = "releaseTime")]
pub release_time: String,
pub time: String,
#[serde(alias = "type")]
pub type_: String,
}
#[derive(Deserialize)]
pub struct Download {
pub client: Client,
}
#[derive(Deserialize)]
pub struct Client {
pub sha1: String,
pub size: u32,
pub url: String,
}
Bibliothèque de dépendances de jeuxlibrary.rs
use serde::Deserialize;
#[derive(Deserialize)]
pub struct Library {
pub downloads: Download,
pub name: String,
pub rules: Option<Vec<Rule>>,
}
#[derive(Deserialize)]
pub struct Rule {
pub action: String,
pub os: Os,
}
#[derive(Deserialize)]
pub struct Os {
pub name: String,
}
#[derive(Deserialize)]
pub struct Download {
pub artifact: Artifact,
}
#[derive(Deserialize)]
pub struct Artifact {
pub path: String,
pub sha1: String,
pub size: i32,
pub url: String,
}
Il y a aussi une liste de versionsversion_manifest.rs
use serde::Deserialize;
#[derive(Deserialize)]
pub struct VersionManifest {
pub latest: Latest,
pub versions: Vec<Version>,
}
#[derive(Deserialize)]
pub struct Latest {
pub release: String,
pub snapshot: String,
}
#[derive(Deserialize)]
pub struct Version {
pub id: String,
#[serde(alias = "type")]
pub type_: String,
pub url: String,
pub time: String,
#[serde(alias = "releaseTime")]
pub release_time: String,
}
Enfin, nous importons ces modules danslib.rs
milieu.
pub mod asset;
pub mod library;
pub mod version;
pub mod version_manifest;