From 7585206979877fd23ab4b3b63fc9c7742e428795 Mon Sep 17 00:00:00 2001 From: "Dr. Matthias Ratajczak" Date: Tue, 10 Jan 2023 15:37:50 +0100 Subject: [PATCH] add infallible From for Package --- src/backend/pacman.rs | 2 +- src/package.rs | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/backend/pacman.rs b/src/backend/pacman.rs index 43e6067..9518c52 100644 --- a/src/backend/pacman.rs +++ b/src/backend/pacman.rs @@ -47,7 +47,7 @@ fn get_explicitly_installed_packages_from_alpm() -> HashSet { } fn convert_to_pacdef_packages(packages: HashSet) -> HashSet { - packages.into_iter().filter_map(Package::try_from).collect() + packages.into_iter().map(Package::from).collect() } impl Pacman { diff --git a/src/package.rs b/src/package.rs index 5915c07..f3288f2 100644 --- a/src/package.rs +++ b/src/package.rs @@ -14,6 +14,16 @@ fn remove_all_but_package_name(s: &str) -> &str { .trim() // remove whitespace } +impl From for Package { + fn from(value: String) -> Self { + let trimmed = remove_all_but_package_name(&value); + debug_assert!(!trimmed.is_empty(), "empty package names are not allowed"); + + let (name, repo) = Self::split_into_name_and_repo(trimmed); + Self { name, repo } + } +} + impl Package { fn split_into_name_and_repo(s: &str) -> (String, Option) { let mut iter = s.split('/').rev();