Thanks to visit codestin.com
Credit goes to lib.rs

#toml-serialization #struct #block #pretty #serde-serializable

toml_pretty

a function to pretty serialize a serde-serializable value to toml

12 releases (stable)

2.0.0 Nov 11, 2025
1.2.0 Aug 14, 2025
1.1.2 Jun 11, 2024
0.3.0 Jun 11, 2024
0.1.0 Jun 10, 2024

#904 in Encoding

Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

55 downloads per month

MIT license

11KB
252 lines

toml_pretty

A function to pretty serialize a serde-serializable value to toml.

Can serialize structs to toml in a single block (unlike the toml crate, which is great for deserialization but not so great for pretty serialization)

Nested array fields more than 2 arrays deep are not supported.

Note. All items in arrays are on a new line and indented. toml_pretty::to_string uses \t by default as tab. An alternal tab symbol can be used (eg. 2 spaces) using the Options (shown in example).

Example

Given serializable structs:

#[derive(Serialize)]
struct User {
  name: String,
  nicknames: Vec<String>,
  birthday: Birthday,
  more: Vec<Birthday>,
}

#[derive(Serialize)]
struct Birthday {
  day: u8,
  month: u8,
  year: u16,
}

Can use toml_pretty::to_string:

let user = User {
	name: String::from("Jonathan"),
	nicknames: vec![String::from("Jack"), String::from("Jon")],
	birthday: Birthday {
		day: 0,
		month: 0,
		year: 1980,
	},
	more: vec![
		Birthday {
			day: 0,
			month: 0,
			year: 1980,
		},
		Birthday {
			day: 0,
			month: 0,
			year: 1980,
		},
	],
};
println!(
	"{}",
	toml_pretty::to_string(&user, toml_pretty::Options::default().tab("  "))
		.context("failed to serialize user pretty")
		.unwrap()
);

Dependencies

~1.7–2.7MB
~48K SLoC