Crate questdb_confstr

Source
Expand description

§questdb-confstr

§Format

Parser for a configuration string format used by QuestDB clients.

The format is as follows:

service::key1=value1;key2=value2;key3=value3;

A few rules:

  • The last semicolon is optional.
  • Service name and keys are case-sensitive.
  • Keys are ASCII alphanumeric and can contain underscores.
  • Values are case-sensitive unicode strings which can contain any characters,
    • Except control characters (0x00..=0x1f and 0x7f..=0x9f).
    • If semicolons ; appears in a value, these are escaped as double semicolon ;;.

§Grammar

conf_str ::= service "::" params | service
service ::= identifier
params ::= param (";" param)* ";"?
param ::= key "=" value
key ::= identifier
value ::= { value_char }

identifier ::= alpha_num_under { alpha_num_under }
alpha_num_under ::= "a".."z" | "A".."Z" | "0".."9" | "_"
value_char ::= non_semicolon_char | escaped_semicolon
escaped_semicolon ::= ";;"
non_semicolon_char ::= ? any unicode character except ';', 0x00..=0x1f and 0x7f..=0x9f ?

§Usage

§Add dependency to Cargo.toml

cargo add questdb-confstr

§Usage

Use the parse_conf_str function to parse into a ConfStr struct.

You can then access the service name as &str and parameters as a &HashMap<String, String>.

§Where we use it

We use this config parsing format in our Rust, C, C++ and Python clients.

We also use it to configure object stores for database replication.

Structs§

ConfStr
Parsed configuration string.
ParsingError
The parsing error.

Enums§

ErrorKind
The type of parsing error.

Functions§

parse_conf_str
Parse a config string.

Type Aliases§

Key
Parameter keys are ascii lowercase strings.
Params
Parameters are stored in a Vec of (Key, Value) pairs. Keys are always lowercase.
Position
Byte position in the input string where the parsing error occurred.
Value
Parameter values are strings.