rust: serde-yamlはdeprecated
2025/10/18
Rust のコードを書いていて、何でもよいから設定ファイルが作りたくなった。
JSON はありきたりだし、ここは Rust だから YAML かなと考えた(TOML と勘違いしたらしい)。
検索で “rust yaml” を探すと serde_yaml の用例が出てきた。
書いてあるとおりに cargo add
して、書いてあるとおりにやると動いた。
めでたしめでたしだったのだが、Carto.toml を見ると serde_yaml 0.9.34-deprecated となっている。
今から使うのに deprecated のライブラリをわざわざ使うことも無いよなあ。。。
後継のライブラリはいろいろ候補があるようなのだが、全然勘所が無いので困ったものだ。
では TOML で
YAML に思い入れがあるわけでもないので、別のフォーマットにしよう。
Cargo.toml
があるくらいだし TOML なら標準でサポートしているだろうと思った。
serde と互換性があるらしい。
“serde_yaml” を remove し(serde は既にあった)、あとはちょっと書き換えるだけで動いた。
YAML のときに参照したサイトでは BufReader
を使って serde_yaml::from_reader()
とやっていたのだが、
メソッドがなかったので全部読み込んで toml::from_str()
に与えた。
use serde::Deserialize;
use toml;
......
#[derive(Deserialize, Debug)]
pub struct BitcoinRpc {
pub user: String,
pub password: String,
pub server: String,
}
impl BitcoinRpc {
pub fn new() -> Result<BitcoinRpc> {
let mut settings = String::new();
let mut f = File::open(FILENAME)?;
f.read_to_string(&mut settings)?;
let data: BitcoinRpc = toml::from_str(&settings)?;
Ok(data)
}
......
writer: hiro99ma