diff --git a/src/rstd/singular.rs b/src/rstd/singular.rs index 3295537..ed5a4ca 100644 --- a/src/rstd/singular.rs +++ b/src/rstd/singular.rs @@ -40,7 +40,7 @@ pub struct SingularResolver<'a, Ctx: Context<'a>> { points: Vec>>, } -pub struct SingularRobust<'a, Ctx: Context<'a>> { +struct SingularRobust<'a, Ctx: Context<'a>> { resolver: Arc>, } @@ -105,6 +105,16 @@ impl<'a, Ctx: Context<'a>> SingularResolver<'a, Ctx> { Ok(point.clone().singular()) } } + + pub fn robust(self) -> Arc> + where + Ctx: SingularCtx<'a>, + { + SingularRobust { + resolver: self.into(), + } + .into_rc() + } } impl<'a, Ctx: Context<'a>> Resolver<'a, Ctx> for SingularResolver<'a, Ctx> { @@ -113,7 +123,7 @@ impl<'a, Ctx: Context<'a>> Resolver<'a, Ctx> for SingularResolver<'a, Ctx> { } } -trait SingularCtx<'a>: Context<'a> { +pub trait SingularCtx<'a>: Context<'a> { fn from_singular(error: SingularError) -> Self::LookupError; }