pub struct PackageFileName { /* private fields */ }Expand description
The full filename of a package.
A package filename tracks its Name, FullVersion, Architecture and the optional
CompressionAlgorithmFileExtension.
Implementations§
Source§impl PackageFileName
impl PackageFileName
Sourcepub fn new(
name: Name,
version: FullVersion,
architecture: Architecture,
compression: Option<CompressionAlgorithmFileExtension>,
) -> Self
pub fn new( name: Name, version: FullVersion, architecture: Architecture, compression: Option<CompressionAlgorithmFileExtension>, ) -> Self
Creates a new PackageFileName.
§Errors
Returns an error if the provided version does not have the pkgrel component.
§Examples
use std::str::FromStr;
use alpm_types::PackageFileName;
assert_eq!(
"example-1:1.0.0-1-x86_64.pkg.tar.zst",
PackageFileName::new(
"example".parse()?,
"1:1.0.0-1".parse()?,
"x86_64".parse()?,
Some("zst".parse()?)
)
.to_string()
);Sourcepub fn version(&self) -> &FullVersion
pub fn version(&self) -> &FullVersion
Returns a reference to the FullVersion.
§Examples
use std::str::FromStr;
use alpm_types::{FullVersion, PackageFileName};
let file_name = PackageFileName::new(
"example".parse()?,
"1:1.0.0-1".parse()?,
"x86_64".parse()?,
Some("zst".parse()?),
);
assert_eq!(file_name.version(), &FullVersion::from_str("1:1.0.0-1")?);Sourcepub fn architecture(&self) -> &Architecture
pub fn architecture(&self) -> &Architecture
Returns the Architecture.
§Examples
use std::str::FromStr;
use alpm_types::{PackageFileName, SystemArchitecture};
let file_name = PackageFileName::new(
"example".parse()?,
"1:1.0.0-1".parse()?,
"x86_64".parse()?,
Some("zst".parse()?),
);
assert_eq!(file_name.architecture(), &SystemArchitecture::X86_64.into());Sourcepub fn compression(&self) -> Option<CompressionAlgorithmFileExtension>
pub fn compression(&self) -> Option<CompressionAlgorithmFileExtension>
Returns the optional CompressionAlgorithmFileExtension.
§Examples
use std::str::FromStr;
use alpm_types::{CompressionAlgorithmFileExtension, PackageFileName};
let file_name = PackageFileName::new(
"example".parse()?,
"1:1.0.0-1".parse()?,
"x86_64".parse()?,
Some("zst".parse()?),
);
assert_eq!(
file_name.compression(),
Some(CompressionAlgorithmFileExtension::Zstd)
);Sourcepub fn to_path_buf(&self) -> PathBuf
pub fn to_path_buf(&self) -> PathBuf
Returns the PackageFileName as PathBuf.
§Examples
use std::{path::PathBuf, str::FromStr};
use alpm_types::PackageFileName;
let file_name = PackageFileName::new(
"example".parse()?,
"1:1.0.0-1".parse()?,
"x86_64".parse()?,
Some("zst".parse()?),
);
assert_eq!(
file_name.to_path_buf(),
PathBuf::from("example-1:1.0.0-1-x86_64.pkg.tar.zst")
);Sourcepub fn set_compression(
&mut self,
compression: Option<CompressionAlgorithmFileExtension>,
)
pub fn set_compression( &mut self, compression: Option<CompressionAlgorithmFileExtension>, )
Sets the compression of the PackageFileName.
§Examples
use std::str::FromStr;
use alpm_types::{CompressionAlgorithmFileExtension, PackageFileName};
// Create package file name with compression
let mut file_name = PackageFileName::new(
"example".parse()?,
"1:1.0.0-1".parse()?,
"x86_64".parse()?,
Some("zst".parse()?),
);
// Remove the compression
file_name.set_compression(None);
assert!(file_name.compression().is_none());
// Add other compression
file_name.set_compression(Some(CompressionAlgorithmFileExtension::Gzip));
assert!(
file_name
.compression()
.is_some_and(|compression| compression == CompressionAlgorithmFileExtension::Gzip)
);Sourcepub fn parser(input: &mut &str) -> ModalResult<Self>
pub fn parser(input: &mut &str) -> ModalResult<Self>
Recognizes a PackageFileName in a string slice.
Relies on winnow to parse input and recognize the Name, FullVersion,
Architecture and CompressionAlgorithmFileExtension components.
§Errors
Returns an error if
- the
Namecomponent can not be recognized, - the
FullVersioncomponent can not be recognized, - the
Architecturecomponent can not be recognized, - or the
CompressionAlgorithmFileExtensioncomponent can not be recognized.
§Examples
use alpm_types::PackageFileName;
use winnow::Parser;
let filename = "example-package-1:1.0.0-1-x86_64.pkg.tar.zst";
assert_eq!(
filename,
PackageFileName::parser.parse(filename)?.to_string()
);Trait Implementations§
Source§impl Clone for PackageFileName
impl Clone for PackageFileName
Source§fn clone(&self) -> PackageFileName
fn clone(&self) -> PackageFileName
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PackageFileName
impl Debug for PackageFileName
Source§impl<'de> Deserialize<'de> for PackageFileName
impl<'de> Deserialize<'de> for PackageFileName
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>,
Source§impl Display for PackageFileName
impl Display for PackageFileName
Source§impl From<PackageFileName> for InstalledPackage
impl From<PackageFileName> for InstalledPackage
Source§fn from(value: PackageFileName) -> Self
fn from(value: PackageFileName) -> Self
Creates a InstalledPackage from a PackageFileName.
Source§impl From<PackageFileName> for String
impl From<PackageFileName> for String
Source§fn from(value: PackageFileName) -> Self
fn from(value: PackageFileName) -> Self
Creates a String from a PackageFileName.
Source§impl FromStr for PackageFileName
impl FromStr for PackageFileName
Source§fn from_str(s: &str) -> Result<Self, Self::Err>
fn from_str(s: &str) -> Result<Self, Self::Err>
Creates a PackageFileName from a string slice.
Delegates to PackageFileName::parser.
§Errors
Returns an error if PackageFileName::parser fails.
§Examples
use std::str::FromStr;
use alpm_types::PackageFileName;
let filename = "example-package-1:1.0.0-1-x86_64.pkg.tar.zst";
assert_eq!(filename, PackageFileName::from_str(filename)?.to_string());Source§impl PartialEq for PackageFileName
impl PartialEq for PackageFileName
Source§impl Serialize for PackageFileName
impl Serialize for PackageFileName
Source§impl TryFrom<&Path> for PackageFileName
impl TryFrom<&Path> for PackageFileName
Source§fn try_from(value: &Path) -> Result<Self, Self::Error>
fn try_from(value: &Path) -> Result<Self, Self::Error>
Creates a PackageFileName from a Path reference.
The file name in value is extracted and, if valid is turned into a string slice.
The creation of the PackageFileName is delegated to PackageFileName::parser.
§Errors
Returns an error if
valuedoes not contain a valid file name,valuecan not be turned into a string slice,- or
PackageFileName::parserfails.
§Examples
use std::path::PathBuf;
use alpm_types::PackageFileName;
let filename = PathBuf::from("../example-package-1:1.0.0-1-x86_64.pkg.tar.zst");
assert_eq!(
filename,
PathBuf::from("..").join(PackageFileName::try_from(filename.as_path())?.to_path_buf()),
);Source§impl TryFrom<String> for PackageFileName
impl TryFrom<String> for PackageFileName
Source§fn try_from(value: String) -> Result<Self, Self::Error>
fn try_from(value: String) -> Result<Self, Self::Error>
Creates a PackageFileName from a String.
Delegates to PackageFileName::parser.
§Errors
Returns an error if PackageFileName::parser fails.
§Examples
use std::str::FromStr;
use alpm_types::PackageFileName;
let filename = "example-package-1:1.0.0-1-x86_64.pkg.tar.zst".to_string();
assert_eq!(
filename.clone(),
PackageFileName::try_from(filename)?.to_string()
);impl Eq for PackageFileName
impl StructuralPartialEq for PackageFileName
Auto Trait Implementations§
impl Freeze for PackageFileName
impl RefUnwindSafe for PackageFileName
impl Send for PackageFileName
impl Sync for PackageFileName
impl Unpin for PackageFileName
impl UnwindSafe for PackageFileName
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)