1pub mod exploration;
2pub mod parsing;
3pub mod pathfinding;
4pub mod pathfinding_config;
5pub mod string_normalization;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
8#[serde(rename_all = "lowercase")]
9#[derive(Default)]
10pub enum Algorithm {
11 #[default]
12 Bfs,
13 Dijkstra,
14}
15
16impl Algorithm {
17 pub fn as_str(&self) -> &'static str {
18 match self {
19 Algorithm::Bfs => "bfs",
20 Algorithm::Dijkstra => "dijkstra",
21 }
22 }
23}
24
25impl From<&str> for Algorithm {
26 fn from(s: &str) -> Self {
27 match s.to_lowercase().as_str() {
28 "dijkstra" => Algorithm::Dijkstra,
29 _ => Algorithm::Bfs, }
31 }
32}
33
34impl From<String> for Algorithm {
35 fn from(s: String) -> Self {
36 Algorithm::from(s.as_str())
37 }
38}
39
40pub use exploration::{ExplorationResult, ExplorationStats, explore_bfs, explore_dijkstra};
42pub use parsing::{Artist, find_artist_id, parse_unified_metadata};
43pub use pathfinding::{
44 BiDirectionalGraphs, EnhancedPathResult, bfs_find_path, dijkstra_find_path,
45 find_paths_with_exploration, get_artist_connections,
46};
47pub use pathfinding_config::PathfindingConfig;
48
49#[cfg(feature = "python")]
51pub use string_normalization::normalization;