1mod aliases;
6mod analysis_task;
7mod atom;
8mod atom_storage;
9mod bond;
10mod bond_storage;
11mod connectivity;
12mod distance_search;
13mod dss;
14mod dssp;
15mod measure;
16mod modify;
17mod ndx_file;
18mod par;
19mod particle;
20mod perception;
21mod periodic_box;
22mod periodic_table;
23mod providers;
24mod sasa;
25mod secondary_structure;
26mod selection;
27mod smiles;
28mod state;
29mod topology;
30mod seq_align;
31
32pub mod io;
33pub mod voronoi_cell;
34
35pub mod prelude {
37 pub use crate::{
38 aliases::*, analysis_task::*, atom::*, atom_storage::*, bond::*, bond_storage::*,
39 connectivity::*,
40 distance_search::*, dssp::*, io::*, measure::*, modify::*, ndx_file::*, particle::*,
41 perception::*, periodic_box::*, providers::*, dss::*, sasa::*, secondary_structure::*,
42 selection::*, smiles::*, state::*, topology::*,
43 };
44 pub use crate::par::*;
47}
48
49pub use crate::{
50 aliases::*, analysis_task::*, atom::*, bond::*, connectivity::*, distance_search::*, dss::*, dssp::*, io::*,
51 measure::*, modify::*, ndx_file::*, particle::*, perception::*, periodic_box::*, providers::*, sasa::*,
52 secondary_structure::*, selection::*, smiles::*, state::*, topology::*,
53};
54
55const BOLD: &str = "\x1b[1m";
56const RESET: &str = "\x1b[0m";
57
58pub fn greeting(tool: impl AsRef<str>) {
65 const TITLE: &str = "MolAR - Molecular Analysis for Rust";
66
67 let version = format!("MolAR version: {}", env!("CARGO_PKG_VERSION"));
68 let tool = format!("Tool: {}", tool.as_ref());
69
70 let w = [env!("CARGO_PKG_HOMEPAGE"), env!("CARGO_PKG_AUTHORS"), &version, &tool]
72 .iter()
73 .map(|s| s.len())
74 .max()
75 .unwrap_or(0)
76 .max(TITLE.len());
77 let bar = "─".repeat(w + 2);
78
79 println!("╭{bar}╮");
80 println!("│ {BOLD}{TITLE:<w$}{RESET} │");
81 println!("├{bar}┤");
82 println!("│ {:<w$} │", env!("CARGO_PKG_HOMEPAGE"));
83 println!("│ {:<w$} │", env!("CARGO_PKG_AUTHORS"));
84 println!("├{bar}┤");
85 println!("│ {version:<w$} │");
86 println!("├{bar}┤");
87 println!("│ {tool:<w$} │");
88 println!("╰{bar}╯");
89}
90
91#[cfg(doctest)]
93#[doc = include_str!("../../README.md")]
94struct _ReadMe;