Crates.io | serde-java-properties |
lib.rs | serde-java-properties |
version | 0.2.0 |
source | src |
created_at | 2022-01-09 15:09:33.330045 |
updated_at | 2024-04-29 20:05:09.169346 |
description | Serde support for `java-properties` |
homepage | |
repository | https://github.com/Xiphoseer/serde-java-properties |
max_upload_size | |
id | 510874 |
size | 41,411 |
Java Properties is a simple, line-oriented format for specifying key-value resources used in Java programs. This crate offers basic (de-)serializers for use with serde-enabled datastructures.
field_a: a value
field_b: 100
field_c: true
Internally, the java-properties
crate is used
for iterating key-value pairs in an input stream, and writing key-value pairs to an output
stream.
Usually, the format is untyped i.e. it deserialises to a map from String
to String
. This
crate uses the default std::str::FromStr
implementations for integers, floats and booleans to
provide a typed interface on top of that. That way, simple structures or maps that implement
serde::Deserialize
can be loaded from properties files.
use serde::Deserialize;
#[derive(Debug, PartialEq, Deserialize)]
struct Data {
field_a: String,
field_b: usize,
field_c: bool,
}
let text = "
field_a: a value
field_b: 100
field_c: true
";
let data: Data = serde_java_properties::from_str(text).unwrap();
assert_eq!(data.field_a, "a value");
assert_eq!(data.field_b, 100);
assert_eq!(data.field_c, true);
Serialization uses the default std::fmt::Display
implementations for each primitive type.
Supported in the top-level Serializer
:
Supported in the field-level Serializer
:
i8
, i16
, i32
, i64
, u8
, u16
, u32
, u64
)f32
, f64
)true
or false
)use serde::Serialize;
#[derive(Debug, PartialEq, Serialize)]
struct Data {
field_a: String,
field_b: usize,
field_c: bool,
}
let data = Data { field_a: "value".to_string(), field_b: 100, field_c: true };
let string = serde_java_properties::to_string(&data).unwrap();
assert_eq!(string, "field_a=value\nfield_b=100\nfield_c=true\n");
Similar to the java-properties
crate itself,
this crate is supposed to be an exact match to the format
as specified in Java.
If you need a more powerful configuration syntax, that supports nested structs, you
should probably use HOCON.