pub(crate) fn main() -> Result<()>