detached std::{typeless,cast}
from points
This commit is contained in:
parent
43ae010a93
commit
8410d6ad7f
@ -87,7 +87,7 @@ where
|
|||||||
|resolved| match resolved {
|
|resolved| match resolved {
|
||||||
Ok(mentionable) => {
|
Ok(mentionable) => {
|
||||||
let resolver: Rc<dyn Resolver<'a, Ctx>> = Rc::new(CastResolver {
|
let resolver: Rc<dyn Resolver<'a, Ctx>> = Rc::new(CastResolver {
|
||||||
points: mentionable.points_vec(),
|
points: mentionable.points_vec_2(),
|
||||||
});
|
});
|
||||||
Ok((mentionable.bytes(), resolver))
|
Ok((mentionable.bytes(), resolver))
|
||||||
}
|
}
|
||||||
@ -117,7 +117,7 @@ where
|
|||||||
factory.parse_slice(
|
factory.parse_slice(
|
||||||
&self.bytes(),
|
&self.bytes(),
|
||||||
map_resolver(Rc::new(CastResolver {
|
map_resolver(Rc::new(CastResolver {
|
||||||
points: self.points_vec(),
|
points: self.points_vec_2(),
|
||||||
})),
|
})),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -101,3 +101,30 @@ impl<'a, Ctx: 'a + Context, A: Mentionable<'a, Ctx>> Point<'a, Ctx, A> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait MentionableExt2<'a, Ctx: 'a + Context>: Mentionable<'a, Ctx> {
|
||||||
|
/// References ([Point]s) to other objects. Typeless.
|
||||||
|
fn points_typeless(&self, points: &mut Vec<Point<'a, Ctx, TypelessMentionable<'a, Ctx>>>);
|
||||||
|
/// [Vec] of [Point]s as used by [`Mentionable::topology`].
|
||||||
|
fn points_vec_2(&self) -> Vec<Point<'a, Ctx, TypelessMentionable<'a, Ctx>>>;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, Ctx: 'a + Context, A: Mentionable<'a, Ctx>> MentionableExt2<'a, Ctx> for A {
|
||||||
|
fn points_typeless(&self, points: &mut Vec<Point<'a, Ctx, TypelessMentionable<'a, Ctx>>>) {
|
||||||
|
self.points_typed(points)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn points_vec_2(&self) -> Vec<Point<'a, Ctx, TypelessMentionable<'a, Ctx>>> {
|
||||||
|
let mut points = Vec::new();
|
||||||
|
self.points_typeless(&mut points);
|
||||||
|
points
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, Ctx: 'a + Context> TakesPoints<'a, Ctx>
|
||||||
|
for Vec<Point<'a, Ctx, TypelessMentionable<'a, Ctx>>>
|
||||||
|
{
|
||||||
|
fn take<A: Mentionable<'a, Ctx>>(&mut self, point: &Point<'a, Ctx, A>) {
|
||||||
|
self.push(point.typeless());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user