Skip to main content

shiguredo_toml/
lib.rs

1//! TOML v1.0.0 / v1.1.0 ライブラリ。
2//!
3//! 外部依存なしで TOML v1.0.0 および v1.1.0 仕様に完全準拠するパーサとシリアライザを提供する。
4//!
5//! `no_std` 環境向け。ヒープ割り当てのため `alloc` が必要。
6
7#![no_std]
8
9extern crate alloc;
10
11use alloc::string::String;
12
13mod datetime;
14mod edit;
15mod error;
16mod parser;
17mod serializer;
18mod span;
19mod value;
20
21pub use datetime::{Date, Datetime, Offset, Time};
22pub use edit::Document;
23pub use error::Error;
24pub use span::{
25    CommentIndex, CommentSpan, PathSegment, SectionIndex, SectionSpan, SpanIndex, TextSpan,
26    ValuePath, parse_value_path,
27};
28pub use value::{Array, Table, Value};
29
30/// TOML バージョン。
31#[derive(Debug, Clone, Copy, PartialEq, Eq)]
32pub enum TomlVersion {
33    /// TOML v1.0.0
34    V1_0,
35    /// TOML v1.1.0
36    V1_1,
37}
38
39/// TOML 文字列を解析して Table に変換する。
40///
41/// TOML ドキュメントのルートは常にテーブルである。デフォルトは TOML v1.0.0。
42pub fn from_str(s: &str) -> Result<Table, Error> {
43    parser::parse(s, TomlVersion::V1_0)
44}
45
46/// TOML 文字列を指定バージョンで解析して Table に変換する。
47pub fn from_str_with_version(s: &str, version: TomlVersion) -> Result<Table, Error> {
48    parser::parse(s, version)
49}
50
51/// Value を TOML 文字列に変換する。
52pub fn to_string(value: &Value) -> Result<String, Error> {
53    serializer::to_string(value)
54}
55
56/// 単一 Value を TOML の単一値テキストに変換する。
57pub fn to_inline_string(value: &Value) -> Result<String, Error> {
58    serializer::to_inline_string(value)
59}
60
61/// Value を整形済み TOML 文字列に変換する。
62pub fn to_string_pretty(value: &Value) -> Result<String, Error> {
63    serializer::to_string_pretty(value)
64}