22 lines
746 B
Rust
22 lines
746 B
Rust
use super::*;
|
|
|
|
/// Topological [Mentionable]. Allows iterating over [Point]s it references, if any;
|
|
pub trait MentionableTop<'a, Ctx: Context<'a>>: 'a {
|
|
/// See implementation for the definition.
|
|
/// Hash of all the references' points concatenated, ordered, non-unique.
|
|
/// Used for walking over object trees to ensure two objects with different references don't collide.
|
|
fn topology_hash(&self) -> Hash
|
|
where
|
|
Self: Mentionable<'a, Ctx>,
|
|
{
|
|
let mut vec = Vec::new();
|
|
self.points_typed(&mut vec);
|
|
Ctx::hash(&vec)
|
|
}
|
|
|
|
/// References ([Point]s) to other objects. Typed.
|
|
fn points_typed(&self, points: &mut impl PointsVisitor<'a, Ctx>)
|
|
where
|
|
Self: Mentionable<'a, Ctx>;
|
|
}
|