pub enum FilesSchema {
V1(SchemaVersion),
}Expand description
A schema for the alpm-files format.
Variants§
V1(SchemaVersion)
Version 1 of the alpm-files specification.
Trait Implementations§
Source§impl Clone for FilesSchema
impl Clone for FilesSchema
Source§fn clone(&self) -> FilesSchema
fn clone(&self) -> FilesSchema
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FilesSchema
impl Debug for FilesSchema
Source§impl Default for FilesSchema
impl Default for FilesSchema
Source§fn default() -> Self
fn default() -> Self
Returns the default schema variant (FilesSchema::V1).
Source§impl FileFormatSchema for FilesSchema
impl FileFormatSchema for FilesSchema
Source§fn inner(&self) -> &SchemaVersion
fn inner(&self) -> &SchemaVersion
Returns a reference to the inner SchemaVersion.
Source§fn derive_from_file(file: impl AsRef<Path>) -> Result<Self, Self::Err>where
Self: Sized,
fn derive_from_file(file: impl AsRef<Path>) -> Result<Self, Self::Err>where
Self: Sized,
Creates a new FilesSchema from a file Path.
§Note
Delegates to Self::derive_from_reader after opening file for reading.
§Errors
Returns an error if
filecannot be opened for reading,- or
Self::derive_from_readerfails.
§Examples
use std::io::Write;
use alpm_common::FileFormatSchema;
use alpm_files::FilesSchema;
use tempfile::NamedTempFile;
let data = r#"%FILES%
usr/
usr/bin/
usr/bin/foo
"#;
let mut temp_file = NamedTempFile::new()?;
write!(temp_file, "{data}");
let schema = FilesSchema::derive_from_file(temp_file.path())?;
matches!(schema, FilesSchema::V1(_));
// Empty inputs may also be considered as a schema
let mut temp_file = NamedTempFile::new()?;
let schema = FilesSchema::derive_from_file(temp_file.path())?;
matches!(schema, FilesSchema::V1(_));Source§fn derive_from_reader(reader: impl Read) -> Result<Self, Self::Err>where
Self: Sized,
fn derive_from_reader(reader: impl Read) -> Result<Self, Self::Err>where
Self: Sized,
Creates a new FilesSchema from a Read implementation.
§Note
Delegates to Self::derive_from_str after reading the reader to string.
§Errors
Returns an error if
readercannot be read to string,- or
Self::derive_from_strfails.
§Examples
use std::io::{Seek, SeekFrom, Write};
use alpm_common::FileFormatSchema;
use alpm_files::FilesSchema;
use tempfile::tempfile;
let data = r#"%FILES%
usr/
usr/bin/
usr/bin/foo
"#;
let mut temp_file = tempfile()?;
write!(temp_file, "{data}");
temp_file.seek(SeekFrom::Start(0))?;
let schema = FilesSchema::derive_from_reader(temp_file)?;
matches!(schema, FilesSchema::V1(_));
// Empty inputs may also be considered as a schema
let mut temp_file = tempfile()?;
let schema = FilesSchema::derive_from_reader(temp_file)?;
matches!(schema, FilesSchema::V1(_));Source§fn derive_from_str(s: &str) -> Result<Self, Self::Err>where
Self: Sized,
fn derive_from_str(s: &str) -> Result<Self, Self::Err>where
Self: Sized,
Creates a new FilesSchema from a string slice.
§Errors
Returns an error if
- a
FilesSchemacannot be derived froms, - or a
FilesV1cannot be created froms.
§Examples
use alpm_common::FileFormatSchema;
use alpm_files::FilesSchema;
let data = r#"%FILES%
usr/
usr/bin/
usr/bin/foo
"#;
let schema = FilesSchema::derive_from_str(data)?;
matches!(schema, FilesSchema::V1(_));
// Empty inputs may also be considered as a schema
let data = "";
let schema = FilesSchema::derive_from_str(data)?;
matches!(schema, FilesSchema::V1(_));Source§impl MetadataFile<FilesSchema> for Files
impl MetadataFile<FilesSchema> for Files
Source§fn from_file_with_schema(
file: impl AsRef<Path>,
schema: Option<FilesSchema>,
) -> Result<Self, Self::Err>where
Self: Sized,
fn from_file_with_schema(
file: impl AsRef<Path>,
schema: Option<FilesSchema>,
) -> Result<Self, Self::Err>where
Self: Sized,
Creates a new Files from a file Path and an optional FilesSchema.
§Note
Delegates to Self::from_reader_with_schema after opening file for reading.
§Errors
Returns an error if
- the
filecannot be opened for reading, - or
Self::from_reader_with_schemafails.
§Examples
use std::io::Write;
use alpm_common::MetadataFile;
use alpm_files::{Files, FilesSchema};
use alpm_types::{SchemaVersion, semver_version::Version};
use tempfile::NamedTempFile;
let data = r#"%FILES%
usr/
usr/bin/
usr/bin/foo
"#;
let mut temp_file = NamedTempFile::new()?;
write!(temp_file, "{data}")?;
let files = Files::from_file_with_schema(
temp_file.path(),
Some(FilesSchema::V1(SchemaVersion::new(Version::new(1, 0, 0)))),
)?;
matches!(files, Files::V1(_));
assert_eq!(files.as_ref().len(), 3);Source§fn from_reader_with_schema(
reader: impl Read,
schema: Option<FilesSchema>,
) -> Result<Self, Self::Err>where
Self: Sized,
fn from_reader_with_schema(
reader: impl Read,
schema: Option<FilesSchema>,
) -> Result<Self, Self::Err>where
Self: Sized,
Creates a new Files from a Read implementation and an optional FilesSchema.
§Note
Delegates to Self::from_str_with_schema after reading reader to string.
§Errors
Returns an error if
- the
readercannot be read to string, - or
Self::from_str_with_schemafails.
§Examples
use std::io::{Seek, SeekFrom, Write};
use alpm_common::MetadataFile;
use alpm_files::{Files, FilesSchema};
use alpm_types::{SchemaVersion, semver_version::Version};
use tempfile::tempfile;
let data = r#"%FILES%
usr/
usr/bin/
usr/bin/foo
"#;
let mut temp_file = tempfile()?;
write!(temp_file, "{data}")?;
temp_file.seek(SeekFrom::Start(0))?;
let files = Files::from_reader_with_schema(
temp_file,
Some(FilesSchema::V1(SchemaVersion::new(Version::new(1, 0, 0)))),
)?;
matches!(files, Files::V1(_));
assert_eq!(files.as_ref().len(), 3);Source§fn from_str_with_schema(
s: &str,
schema: Option<FilesSchema>,
) -> Result<Self, Self::Err>where
Self: Sized,
fn from_str_with_schema(
s: &str,
schema: Option<FilesSchema>,
) -> Result<Self, Self::Err>where
Self: Sized,
Creates a new Files from a string slice and an optional FilesSchema.
§Errors
Returns an error if
schemaisNoneand aFilesSchemacannot be derived froms,- or a
FilesV1cannot be created froms.
§Examples
use alpm_common::MetadataFile;
use alpm_files::{Files, FilesSchema};
use alpm_types::{SchemaVersion, semver_version::Version};
let data = r#"%FILES%
usr/
usr/bin/
usr/bin/foo
"#;
let files = Files::from_str_with_schema(
data,
Some(FilesSchema::V1(SchemaVersion::new(Version::new(1, 0, 0)))),
)?;
matches!(files, Files::V1(_));
assert_eq!(files.as_ref().len(), 3);