24 releases

0.2.24 Apr 30, 2024
0.2.23 Mar 11, 2024
0.2.22 Sep 30, 2023
0.2.16 Jul 27, 2023
0.2.1 Jun 16, 2022

#897 in Database interfaces

Download history 67/week @ 2024-01-23 94/week @ 2024-01-30 163/week @ 2024-02-06 233/week @ 2024-02-13 236/week @ 2024-02-20 409/week @ 2024-02-27 421/week @ 2024-03-05 287/week @ 2024-03-12 132/week @ 2024-03-19 76/week @ 2024-03-26 154/week @ 2024-04-02 134/week @ 2024-04-09 435/week @ 2024-04-16 457/week @ 2024-04-23 434/week @ 2024-04-30 203/week @ 2024-05-07

1,583 downloads per month
Used in 8 crates (3 directly)

MIT/Apache

43KB
1K SLoC

mdsn

M-DSN: A Multi-address DSN(Data Source Name) parser.

M-DSN support two kind of DSN format:

  1. <driver>[+<protocol>]://<username>:<password>@<addresses>/<database>?<params>
  2. <driver>[+<protocol>]://<username>:<password>@<fragment>?<params>
  3. <driver>://<username>:<password>@<protocol>(<addresses>)/<database>?<params>

All the items will be parsed into struct Dsn.

Parser

use mdsn::Dsn;

// The two styles are equivalent.
let dsn = Dsn::parse("taos://root:taosdata@host1:6030,host2:6030/db")?;
let dsn: Dsn = "taos://root:taosdata@host1:6030,host2:6030/db".parse()?;

assert_eq!(dsn.driver, "taos");
assert_eq!(dsn.username.unwrap(), "root");
assert_eq!(dsn.password.unwrap(), "taosdata");
assert_eq!(dsn.database.unwrap(), "db");
assert_eq!(dsn.addresses.len(), 2);
assert_eq!(dsn.addresses, vec![
    mdsn::Address::new("host1", 6030),
    mdsn::Address::new("host2", 6030),
]);

DSN Examples

A DSN for TDengine driver taos.

taos://root:taosdata@localhost:6030/db?timezone=Asia/Shanghai&asyncLog=1

With multi-address:

taos://root:taosdata@host1:6030,host2:6030/db?timezone=Asia/Shanghai

A DSN for unix socket:

unix:///path/to/unix.sock?param1=value

A DSN for postgresql with url-encoded socket directory path.

postgresql://%2Fvar%2Flib%2Fpostgresql/db

A DSN for sqlite db file, note that you must use prefix ./ for a relative path file.

sqlite://./file.db

License: MIT OR Apache-2.0

Dependencies

~2.9–5MB
~88K SLoC