для всех сущностей в апликухе (база данных и прочее)
столкнулся с проблемой:
есть конфиг от внешнего крейта
#[derive(Debug, Clone)]
pub struct IndexerConfig {
pub home_dir: std::path::PathBuf,
pub sync_mode: SyncModeEnum,
pub await_for_node_synced: AwaitForNodeSyncedEnum,
}
я хочу конфигурировать эти поля через десериализацию данных из конфиг файла, используя крейт config
pub fn get_config() -> Result<Settings, config::ConfigError> {
let mut settings = config::Config::default();
settings.merge(config::File::with_name("config"))?;
settings.try_into()
}
я так не могу сделать потому что моя структура Settings выглядит как
#[derive(Deserialize)]
pub struct Settings {
pub database: DatabaseSettings,
pub indexer: IndexerConfig,
pub app_port: u16,
}
так как для IndexerConfig не задерайвен Deserialize я не могу получить желаемого результата, подскажите как лучше поступить чтобы обойти эти ограничения?
update: нашел вот такое решение https://serde.rs/remote-derive.html ,если есть какие то еще фишечку буду признателен за инфу.
вроде remote-derive лучше особо нету варианта. руками deserialize реализовывать не проще будет
Обсуждают сегодня