use crate::domain::semantic::SemanticData;
use anyhow::Result;
use std::path::Path;
pub trait SemanticDataSource {
fn load(&self) -> Result<SemanticData>;
}
pub trait SourceReader: Send + Sync {
fn read(&self, path: &Path) -> Result<String>;
fn read_lines(&self, path: &str, start_line: usize, end_line: usize) -> Result<Vec<String>>;
}