pub struct Manifest(pub Vec<ManifestEntry>);Expand description
Complete parsed manifest file from a game’s data directory.
Contains all entries from manifest.txt, representing the full list of
official game files.
§Structure
This is a wrapper around a vector of ManifestEntry items, one per line
in the manifest file.
Tuple Fields§
§0: Vec<ManifestEntry>Implementations§
Source§impl Manifest
Implementation of Manifest.
impl Manifest
Implementation of Manifest.
Sourcepub fn read_from_game_path(game: &GameInfo, game_path: &Path) -> Result<Self>
pub fn read_from_game_path(game: &GameInfo, game_path: &Path) -> Result<Self>
Reads and parses the manifest file for a specific game installation.
This is a convenience wrapper that constructs the manifest path from game information and reads it.
§Arguments
game- Game configuration containing path informationgame_path- Root directory of the game installation
§Returns
Returns the parsed Manifest containing all file entries.
§Errors
Returns an error if:
- The game’s data path cannot be determined
- The manifest file doesn’t exist
- The manifest file is malformed or cannot be parsed
§Example
let game_path = Path::new("/path/to/game");
let manifest = Manifest::read_from_game_path(game, game_path)?;Sourcepub fn read(manifest_path: &Path) -> Result<Self>
pub fn read(manifest_path: &Path) -> Result<Self>
Reads and parses a manifest file from a specific path.
Parses a manifest.txt file in tab-delimited format. Handles both 2-column
(older games) and 3-column (newer games) formats automatically.
§Arguments
manifest_path- Path to themanifest.txtfile
§Returns
Returns the parsed Manifest containing all file entries.
§Errors
Returns an error if:
- The file cannot be opened or read
- The format is invalid (wrong number of columns)
- Field values cannot be parsed (e.g., non-numeric size)
§Format Details
Expected format (tab-delimited):
path/to/file.pack<TAB>1234567
path/to/other.pack<TAB>9876543<TAB>1Sourcepub fn is_path_in_manifest(&self, path: &Path) -> bool
pub fn is_path_in_manifest(&self, path: &Path) -> bool
Checks if a file path is listed in the manifest.
Performs case-insensitive comparison and handles path separator differences (backslash vs forward slash).
§Arguments
path- Path to check (can be absolute or relative)
§Returns
Returns true if the path ends with any relative path in the manifest.
§Example
let is_vanilla = manifest.is_path_in_manifest(
Path::new("C:/Games/Warhammer3/data/local_en.pack")
);Trait Implementations§
Source§impl<'de> Deserialize<'de> for Manifest
impl<'de> Deserialize<'de> for Manifest
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Manifest
impl RefUnwindSafe for Manifest
impl Send for Manifest
impl Sync for Manifest
impl Unpin for Manifest
impl UnsafeUnpin for Manifest
impl UnwindSafe for Manifest
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.