diff --git a/libimagbookmark/src/link.rs b/libimagbookmark/src/link.rs index 3dd3aeb0..7dbab981 100644 --- a/libimagbookmark/src/link.rs +++ b/libimagbookmark/src/link.rs @@ -1,5 +1,9 @@ use std::ops::{Deref, DerefMut}; +use result::Result; + +use url::Url; + #[derive(Debug, Clone)] pub struct Link(String); @@ -19,3 +23,19 @@ impl DerefMut for Link { } } + +pub trait IntoUrl { + fn into_url(self) -> Result; +} + +impl IntoUrl for Link { + + fn into_url(self) -> Result { + use error::BookmarkErrorKind as BEK; + use error::MapErrInto; + + Url::parse(&self[..]).map_err_into(BEK::LinkParsingError) + } + +} +