.ok_or_else(|| format_err!("Doesn't start with component '{component}'"))?;
let parse_binary_dir = |file_name: &str, arch: &str| {
- if let Some((dir, _rest)) = file_name.split_once("/") {
+ if let Some((dir, _rest)) = file_name.split_once('/') {
if dir == "Packages.diff" {
// TODO re-evaluate?
Ok(FileReferenceType::PDiff)
}
};
- if let Some((dir, rest)) = rest.split_once("/") {
+ if let Some((dir, rest)) = rest.split_once('/') {
// reference into another subdir
match dir {
"source" => {
// Sources or compat-Release
- if let Some((dir, _rest)) = rest.split_once("/") {
+ if let Some((dir, _rest)) = rest.split_once('/') {
if dir == "Sources.diff" {
Ok(FileReferenceType::PDiff)
} else {
}
"debian-installer" => {
// another layer, then like regular repo but pointing at udebs
- if let Some((dir, rest)) = rest.split_once("/") {
+ if let Some((dir, rest)) = rest.split_once('/') {
if let Some(arch) = dir.strip_prefix("binary-") {
// Packages or compat-Release
return parse_binary_dir(rest, arch);
Ok(FileReferenceType::Unknown)
}
"i18n" => {
- if let Some((dir, _rest)) = rest.split_once("/") {
+ if let Some((dir, _rest)) = rest.split_once('/') {
if dir.starts_with("Translation") && dir.ends_with(".diff") {
Ok(FileReferenceType::PDiff)
} else {
} else {
(rest, false)
};
- let (arch, comp) = match rest.split_once(".") {
+ let (arch, comp) = match rest.split_once('.') {
Some((arch, comp_str)) => (
arch.to_owned(),
FileReferenceType::match_compression(comp_str)?,
}
pub fn is_package_index(&self) -> bool {
- match self {
- FileReferenceType::Packages(_, _) => true,
- _ => false,
- }
+ matches!(self, FileReferenceType::Packages(_, _))
}
}
Some(_) => {
let (base, _ext) = self
.path
- .rsplit_once(".")
+ .rsplit_once('.')
.ok_or_else(|| format_err!("compressed file without file extension"))?;
Ok(base.to_owned())
}