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
31
32
33
34
35
36
37
38
39
40
41
use ;
/// A trait for providing dynamic values to templates.
/// (define once, call on every agent invocation)
///
/// Implementors of this trait act as a data source for template rendering,
/// supplying key-value pairs asynchronously.
///
/// ```
/// use std::{collections::HashMap, future::Future, pin::Pin};
/// use reagent::templates::TemplateDataSource;
///
/// struct StaticDataSource;
///
/// impl TemplateDataSource for StaticDataSource {
/// fn get_values(&self) -> Pin<Box<dyn Future<Output = HashMap<String, String>> + Send>> {
/// Box::pin(async {
/// HashMap::from([
/// ("name".to_string(), "Alice".to_string())
/// ])
/// })
/// }
///
/// fn clone_data_source(&self) -> Box<dyn TemplateDataSource> {
/// Box::new(StaticDataSource)
/// }
/// }
/// ```