storm_config/file/source/
string.rs

1use std::error::Error;
2
3use crate::{
4  file::source::FileSourceResult,
5  file::{FileSource, FileStoredFormat},
6  Format,
7};
8
9/// Describes a file sourced from a string
10#[derive(Clone, Debug)]
11pub struct FileSourceString(String);
12
13impl<'a> From<&'a str> for FileSourceString {
14  fn from(s: &'a str) -> Self {
15    Self(s.into())
16  }
17}
18
19impl<F> FileSource<F> for FileSourceString
20where
21  F: Format + FileStoredFormat + 'static,
22{
23  fn resolve(
24    &self,
25    format_hint: Option<F>,
26  ) -> Result<FileSourceResult, Box<dyn Error + Send + Sync>> {
27    Ok(FileSourceResult {
28      uri: None,
29      content: self.0.clone(),
30      format: Box::new(format_hint.expect("from_str requires a set file format")),
31    })
32  }
33}