re-implement topology
via points_typed
This commit is contained in:
parent
86b87306ef
commit
ff4b4bb5b7
@ -67,9 +67,7 @@ pub trait Mentionable<'a, Ctx: 'a + Context>: 'a + Serializable {
|
|||||||
/// Used for walking over object trees to ensure two objects with different references don't collide.
|
/// Used for walking over object trees to ensure two objects with different references don't collide.
|
||||||
fn topology(&self) -> Hash {
|
fn topology(&self) -> Hash {
|
||||||
let mut vec = Vec::new();
|
let mut vec = Vec::new();
|
||||||
for point in self.points_vec() {
|
self.points_typed(&mut vec);
|
||||||
vec.extend(point.point);
|
|
||||||
}
|
|
||||||
Ctx::hash(&vec)
|
Ctx::hash(&vec)
|
||||||
}
|
}
|
||||||
/// References ([Point]s) to other objects. Typed.
|
/// References ([Point]s) to other objects. Typed.
|
||||||
|
@ -3,3 +3,10 @@ use super::*;
|
|||||||
pub trait TakesPoints<'a, Ctx: 'a + Context> {
|
pub trait TakesPoints<'a, Ctx: 'a + Context> {
|
||||||
fn take<A: Mentionable<'a, Ctx>>(&mut self, point: &Point<'a, Ctx, A>);
|
fn take<A: Mentionable<'a, Ctx>>(&mut self, point: &Point<'a, Ctx, A>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a, Ctx: 'a + Context> TakesPoints<'a, Ctx> for Vec<u8> {
|
||||||
|
/// The only natural implementation, as used in [`Mentionable::topology`].
|
||||||
|
fn take<A: Mentionable<'a, Ctx>>(&mut self, point: &Point<'a, Ctx, A>) {
|
||||||
|
self.extend(point.point)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user