| 468 | } |
| 469 | |
| 470 | pub fn load_path<T: serde::Serialize + serde::de::DeserializeOwned + Default + std::fmt::Debug>( |
| 471 | file: PathBuf, |
| 472 | ) -> T { |
| 473 | let cfg = match confy::load_path(&file) { |
| 474 | Ok(config) => config, |
| 475 | Err(err) => { |
| 476 | if let confy::ConfyError::GeneralLoadError(err) = &err { |
| 477 | if err.kind() == std::io::ErrorKind::NotFound { |
| 478 | return T::default(); |
| 479 | } |
| 480 | } |
| 481 | log::error!("Failed to load config '{}': {}", file.display(), err); |
| 482 | T::default() |
| 483 | } |
| 484 | }; |
| 485 | cfg |
| 486 | } |
| 487 | |
| 488 | #[inline] |
| 489 | pub fn store_path<T: serde::Serialize>(path: PathBuf, cfg: T) -> crate::ResultType<()> { |