Macro parsing
diff --git a/src/ty.rs b/src/ty.rs
index 7cba5f9..1c4917b 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -59,6 +59,15 @@
pub segments: Vec<PathSegment>,
}
+impl<T> From<T> for Path where T: Into<PathSegment> {
+ fn from(segment: T) -> Self {
+ Path {
+ global: false,
+ segments: vec![segment.into()],
+ }
+ }
+}
+
/// A segment of a path: an identifier, an optional lifetime, and a set of types.
///
/// E.g. `std`, `String` or `Box<T>`
@@ -68,10 +77,10 @@
pub parameters: PathParameters,
}
-impl PathSegment {
- pub fn ident(ident: Ident) -> Self {
+impl<T> From<T> for PathSegment where T: Into<Ident> {
+ fn from(ident: T) -> Self {
PathSegment {
- ident: ident,
+ ident: ident.into(),
parameters: PathParameters::none(),
}
}
@@ -373,7 +382,7 @@
})
)
|
- map!(ident, PathSegment::ident)
+ map!(ident, Into::into)
));
named!(type_binding -> TypeBinding, do_parse!(