M-DSN: A Multi-address DSN(Data Source Name) parser.
M-DSN support two kind of DSN format:
<driver>[+<protocol>]://<username>:<password>@<addresses>/<database>?<params>
<driver>[+<protocol>]://<username>:<password>@<fragment>?<params>
<driver>://<username>:<password>@<protocol>(<addresses>)/<database>?<params>
All the items will be parsed into struct Dsn.
```rust 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()?;
asserteq!(dsn.driver, "taos"); asserteq!(dsn.username.unwrap(), "root"); asserteq!(dsn.password.unwrap(), "taosdata"); asserteq!(dsn.database.unwrap(), "db"); asserteq!(dsn.addresses.len(), 2); asserteq!(dsn.addresses, vec![ mdsn::Address::new("host1", 6030), mdsn::Address::new("host2", 6030), ]); ```
A DSN for TDengine driver taos.
dsn
taos://root:taosdata@localhost:6030/db?timezone=Asia/Shanghai&asyncLog=1
With multi-address:
dsn
taos://root:taosdata@host1:6030,host2:6030/db?timezone=Asia/Shanghai
A DSN for unix socket:
dsn
unix:///path/to/unix.sock?param1=value
A DSN for postgresql with url-encoded socket directory path.
dsn
postgresql://%2Fvar%2Flib%2Fpostgresql/db
A DSN for sqlite db file, note that you must use prefix ./
for a relative path file.
dsn
sqlite://./file.db
License: MIT OR Apache-2.0