1use std::fmt;
4
5use crate::flow::Flow;
6
7pub mod markdown;
8
9pub trait FlowSource {
10 fn pull(&self) -> Result<Vec<Flow>, SourceError>;
11}
12
13#[derive(Debug, Clone, PartialEq, Eq)]
14pub struct SourceError(String);
15
16impl SourceError {
17 pub fn new(message: impl Into<String>) -> Self {
18 Self(message.into())
19 }
20}
21
22impl fmt::Display for SourceError {
23 fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
24 formatter.write_str(&self.0)
25 }
26}
27
28impl std::error::Error for SourceError {}