rust: small patches

This commit is contained in:
Horki 2020-10-08 13:40:47 +02:00
parent 54f4500457
commit eaef251b2b
3 changed files with 19 additions and 19 deletions

View file

@ -1,3 +1,4 @@
#[allow(improper_ctypes_definitions)]
#[cfg(not(test))] #[cfg(not(test))]
mod c; mod c;
mod error; mod error;

View file

@ -19,9 +19,9 @@ impl StorePath {
} }
Self::new_from_base_name( Self::new_from_base_name(
path.file_name() path.file_name()
.ok_or(Error::BadStorePath(path.into()))? .ok_or_else(|| Error::BadStorePath(path.into()))?
.to_str() .to_str()
.ok_or(Error::BadStorePath(path.into()))?, .ok_or_else(|| Error::BadStorePath(path.into()))?,
) )
} }
@ -34,7 +34,7 @@ impl StorePath {
pub fn new_from_base_name(base_name: &str) -> Result<Self, Error> { pub fn new_from_base_name(base_name: &str) -> Result<Self, Error> {
if base_name.len() < STORE_PATH_HASH_CHARS + 1 if base_name.len() < STORE_PATH_HASH_CHARS + 1
|| base_name.as_bytes()[STORE_PATH_HASH_CHARS] != '-' as u8 || base_name.as_bytes()[STORE_PATH_HASH_CHARS] != b'-'
{ {
return Err(Error::BadStorePath(base_name.into())); return Err(Error::BadStorePath(base_name.into()));
} }
@ -65,7 +65,7 @@ impl StorePathHash {
Ok(Self(bytes)) Ok(Self(bytes))
} }
pub fn hash<'a>(&'a self) -> &'a [u8; STORE_PATH_HASH_BYTES] { pub fn hash(&self) -> &[u8; STORE_PATH_HASH_BYTES] {
&self.0 &self.0
} }
} }
@ -98,7 +98,7 @@ pub struct StorePathName(String);
impl StorePathName { impl StorePathName {
pub fn new(s: &str) -> Result<Self, Error> { pub fn new(s: &str) -> Result<Self, Error> {
if s.len() == 0 { if s.is_empty() {
return Err(Error::StorePathNameEmpty); return Err(Error::StorePathNameEmpty);
} }
@ -106,25 +106,24 @@ impl StorePathName {
return Err(Error::StorePathNameTooLong); return Err(Error::StorePathNameTooLong);
} }
if s.starts_with('.') let is_good_path_name = s.chars().all(|c| {
|| !s.chars().all(|c| { c.is_ascii_alphabetic()
c.is_ascii_alphabetic() || c.is_ascii_digit()
|| c.is_ascii_digit() || c == '+'
|| c == '+' || c == '-'
|| c == '-' || c == '.'
|| c == '.' || c == '_'
|| c == '_' || c == '?'
|| c == '?' || c == '='
|| c == '=' });
}) if s.starts_with('.') || !is_good_path_name {
{
return Err(Error::BadStorePathName); return Err(Error::BadStorePathName);
} }
Ok(Self(s.to_string())) Ok(Self(s.to_string()))
} }
pub fn name<'a>(&'a self) -> &'a str { pub fn name(&self) -> &str {
&self.0 &self.0
} }
} }

View file

@ -13,7 +13,7 @@ pub fn decoded_len(input_len: usize) -> usize {
input_len * 5 / 8 input_len * 5 / 8
} }
static BASE32_CHARS: &'static [u8; 32] = &b"0123456789abcdfghijklmnpqrsvwxyz"; static BASE32_CHARS: &[u8; 32] = &b"0123456789abcdfghijklmnpqrsvwxyz";
lazy_static! { lazy_static! {
static ref BASE32_CHARS_REVERSE: Box<[u8; 256]> = { static ref BASE32_CHARS_REVERSE: Box<[u8; 256]> = {