blob: 3a022990a6bb96df849efcb50cc9a7e2285eff50 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
use async_trait::async_trait;
use fluent_fallback::types::ResourceId;
use std::io;
/// The users of [`FileSource`] implement this trait to provide loading of
/// resources, returning the contents of a resource as a
/// `String`. [`FileSource`] handles the conversion from string representation
/// into `FluentResource`.
///
/// [`FileSource`]: source/struct.FileSource.html
#[async_trait(?Send)]
pub trait FileFetcher {
/// Return the `String` representation for `path`. This version is
/// blocking.
///
/// See [`fetch`](#tymethod.fetch).
fn fetch_sync(&self, resource_id: &ResourceId) -> io::Result<String>;
/// Return the `String` representation for `path`.
///
/// On success, returns `Poll::Ready(Ok(..))`.
///
/// If no resource is available to be fetched, the method returns
/// `Poll::Pending` and arranges for the current task (via
/// `cx.waker().wake_by_ref()`) to receive a notification when the resource
/// is available.
///
/// See [`fetch_sync`](#tymethod.fetch_sync)
async fn fetch(&self, path: &ResourceId) -> io::Result<String>;
}
|