Skip to main content

Manifest

Struct Manifest 

Source
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.

Source

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 information
  • game_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)?;
Source

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 the manifest.txt file
§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>1
Source

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

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,