/trident

Polymerium in Rust!

Primary LanguageRustMIT LicenseMIT

Trident

Polymerium in Rust!

name = "hello_kitty"
version = "1.20.1"

[[layers]]
active = false
summary = "Builtin"
loaders = [
    "net.minecraftforge:40.0.1"
]
packages = [
    "curseforge:114@514",
    "modrinth:1919",
    "github:d3ara1n/ModularFormula@v0.6"
]

packages 对应

use std::iter::Filter;

pub const LABEL_CURSEFORGE: &str = "curseforge";
pub const LABEL_MODRINTH: &str = "modrinth";
pub const LABEL_GITHUB: &str = "github";

pub trait Repository {
    const LABEL: String;

    async fn search(keyword: &str, page: usize, sizes: usize, filter: Filter);
    async fn resolve(namespace: Option<&str>, identity: &str, version: Option<&str>, filter: Filter);
}

解析的时候是 Vec<Box<dyn Repository>> 依次用 LABEL 去匹配,解析出后续字段调用 repo.resolve()