diff options
| author | Laurenz <laurmaedje@gmail.com> | 2020-01-06 12:41:42 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2020-01-06 12:41:42 +0100 |
| commit | 2ee5810fecb96a8d4e0d078faecc8c91096d6881 (patch) | |
| tree | 702c746a3021f5034e1b31cd07e8fadba0e4dd7a /src/func/mod.rs | |
| parent | bd384a2a633e21cd7deff7ed2a29a9c03a63a20e (diff) | |
Asyncify font loading 🪐
Diffstat (limited to 'src/func/mod.rs')
| -rw-r--r-- | src/func/mod.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/func/mod.rs b/src/func/mod.rs index 427e5b6f..a0875cf9 100644 --- a/src/func/mod.rs +++ b/src/func/mod.rs @@ -4,6 +4,7 @@ use std::any::Any; use std::collections::HashMap; use std::fmt::{self, Debug, Formatter}; +use async_trait::async_trait; use self::prelude::*; #[macro_use] @@ -24,6 +25,7 @@ pub mod prelude { pub use Command::*; } + /// Types representing functions that are parsed from source code. pub trait ParseFunc { type Meta: Clone; @@ -43,12 +45,13 @@ pub trait ParseFunc { /// The trait `[LayoutFuncBounds]` is automatically implemented for types which /// can be used as functions, that is, all types which fulfill the bounds `Debug /// + PartialEq + 'static`. +#[async_trait(?Send)] pub trait LayoutFunc: LayoutFuncBounds { /// Layout this function in a given context. /// /// Returns a sequence of layouting commands which describe what the /// function is doing. - fn layout(&self, ctx: LayoutContext) -> LayoutResult<Commands>; + async fn layout<'a>(&'a self, ctx: LayoutContext<'_, '_>) -> LayoutResult<Commands<'a>>; } impl dyn LayoutFunc { |
