From 5c11aa72239ecbdd9577f027bdc7e9468d68414e Mon Sep 17 00:00:00 2001 From: Laurenz Date: Tue, 4 Feb 2020 11:22:00 +0100 Subject: =?UTF-8?q?Adapt=20for=20tonty=20and=20fix=20a=20few=20bugs=20?= =?UTF-8?q?=F0=9F=9A=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib.rs | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index afb32766..2d6fa021 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -19,7 +19,7 @@ pub use toddle; use std::cell::RefCell; -use std::error::Error; +use std::fmt::Debug; use async_trait::async_trait; use smallvec::smallvec; @@ -40,6 +40,7 @@ macro_rules! pub_use_mod { }; } +#[macro_use] pub mod error; pub mod export; #[macro_use] @@ -71,7 +72,7 @@ pub struct Typesetter { pub type GlobalFontLoader = SharedFontLoader; /// The provider type of font loaders used in the [`Typesetter`]. -pub type GlobalProvider = Box>>; +pub type GlobalProvider = Box>>; impl Typesetter { /// Create a new typesetter. @@ -135,29 +136,30 @@ impl Typesetter { } } -/// Wraps a font provider and transforms its errors into boxed trait objects. -/// This enables font providers that do not return boxed errors to be used with -/// the typesetter. +/// Wraps a font provider and transforms its errors into boxed [`Debug`] trait +/// objects. This enables font providers that do not return these boxed errors +/// to be used with the typesetter. #[derive(Debug)] -pub struct DynErrorProvider

{ +pub struct DebugErrorProvider

{ provider: P, } -impl

DynErrorProvider

-where P: FontProvider, P::Error: Error + 'static { - /// Create a new dynamic error provider from any provider. - pub fn new(provider: P) -> DynErrorProvider

{ - DynErrorProvider { provider } +impl

DebugErrorProvider

+where P: FontProvider, P::Error: Debug + 'static { + /// Create a new debug error provider from any provider. + pub fn new(provider: P) -> DebugErrorProvider

{ + DebugErrorProvider { provider } } } #[async_trait(?Send)] -impl

FontProvider for DynErrorProvider

-where P: FontProvider, P::Error: Error + 'static { +impl

FontProvider for DebugErrorProvider

+where P: FontProvider, P::Error: Debug + 'static { type Data = P::Data; - type Error = Box; + type Error = Box; async fn load(&self, index: usize, variant: usize) -> Result, Self::Error> { - Ok(self.provider.load(index, variant).await?) + self.provider.load(index, variant).await + .map_err(|d| Box::new(d) as Box) } } -- cgit v1.2.3