use soup::glib;
pub trait IntoUri: sealed::IntoUri {}
impl IntoUri for String {}
impl IntoUri for &str {}
impl IntoUri for glib::GString {}
impl IntoUri for &glib::GStr {}
impl IntoUri for glib::Uri {}
impl IntoUri for &glib::Uri {}
mod sealed {
use super::*;
pub trait IntoUri {
fn into_uri(self) -> Result<glib::Uri, glib::Error>;
}
impl IntoUri for String {
fn into_uri(self) -> Result<glib::Uri, glib::Error> {
self.as_str().into_uri()
}
}
impl IntoUri for &str {
fn into_uri(self) -> Result<glib::Uri, glib::Error> {
glib::Uri::parse(self, glib::UriFlags::ENCODED)
}
}
impl IntoUri for glib::Uri {
fn into_uri(self) -> Result<glib::Uri, glib::Error> {
Ok(self)
}
}
impl IntoUri for &glib::Uri {
fn into_uri(self) -> Result<glib::Uri, glib::Error> {
Ok(self.clone())
}
}
impl IntoUri for glib::GString {
fn into_uri(self) -> Result<glib::Uri, glib::Error> {
self.as_str().into_uri()
}
}
impl IntoUri for &glib::GStr {
fn into_uri(self) -> Result<glib::Uri, glib::Error> {
self.as_str().into_uri()
}
}
}