Remove typedef for StoreId type
but make it a new type instead. Also derive and implement as many traits as possible for it, so we keep backwards compatibility as much as possible. Anyways, we need to rewrite some code for this. Suggested-by: Marcel Müller <neikos@neikos.email> Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
This commit is contained in:
parent
1f13594999
commit
799b9e27a5
1 changed files with 45 additions and 1 deletions
|
@ -1,4 +1,7 @@
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
use std::path::Path;
|
||||||
|
use std::borrow::Borrow;
|
||||||
|
|
||||||
use glob::Paths;
|
use glob::Paths;
|
||||||
use semver::Version;
|
use semver::Version;
|
||||||
use std::fmt::{Debug, Formatter};
|
use std::fmt::{Debug, Formatter};
|
||||||
|
@ -10,7 +13,48 @@ use store::Result;
|
||||||
use store::Store;
|
use store::Store;
|
||||||
|
|
||||||
/// The Index into the Store
|
/// The Index into the Store
|
||||||
pub type StoreId = PathBuf;
|
#[derive(Debug, Clone, PartialEq, Hash, Eq, PartialOrd, Ord)]
|
||||||
|
pub struct StoreId(PathBuf);
|
||||||
|
|
||||||
|
impl Into<PathBuf> for StoreId {
|
||||||
|
|
||||||
|
fn into(self) -> PathBuf {
|
||||||
|
self.0
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<PathBuf> for StoreId {
|
||||||
|
|
||||||
|
fn from(pb: PathBuf) -> StoreId {
|
||||||
|
StoreId(pb)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<String> for StoreId {
|
||||||
|
|
||||||
|
fn from(string: String) -> StoreId {
|
||||||
|
StoreId(string.into())
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
impl AsRef<Path> for StoreId {
|
||||||
|
|
||||||
|
fn as_ref(&self) -> &Path {
|
||||||
|
self.0.as_ref()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Borrow<Path> for StoreId {
|
||||||
|
|
||||||
|
fn borrow(&self) -> &Path {
|
||||||
|
self.0.borrow()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/// This Trait allows you to convert various representations to a single one
|
/// This Trait allows you to convert various representations to a single one
|
||||||
/// suitable for usage in the Store
|
/// suitable for usage in the Store
|
||||||
|
|
Loading…
Reference in a new issue