SingularResolver::robust
All checks were successful
buildbot/cargo fmt (1.72) Build done.
buildbot/cargo doc (1.72) Build done.
buildbot/cargo clippy (1.72) Build done.
buildbot/cargo test (1.65) Build done.
buildbot/cargo clippy (1.65) Build done.

This commit is contained in:
AF 2023-09-03 19:37:19 +00:00
parent 0fe1405898
commit 34f4f36550

View File

@ -40,7 +40,7 @@ pub struct SingularResolver<'a, Ctx: Context<'a>> {
points: Vec<Arc<dyn SingularResolution<'a, Ctx>>>,
}
pub struct SingularRobust<'a, Ctx: Context<'a>> {
struct SingularRobust<'a, Ctx: Context<'a>> {
resolver: Arc<SingularResolver<'a, Ctx>>,
}
@ -105,6 +105,16 @@ impl<'a, Ctx: Context<'a>> SingularResolver<'a, Ctx> {
Ok(point.clone().singular())
}
}
pub fn robust(self) -> Arc<dyn Resolver<'a, Ctx>>
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;
}