diff options
author | Profpatsch <mail@profpatsch.de> | 2021-01-23T15·17+0100 |
---|---|---|
committer | Profpatsch <mail@profpatsch.de> | 2021-01-23T15·33+0000 |
commit | cc3f54a0eedb579c2ffd76f0505af0ccf940f9ff (patch) | |
tree | 7a0e5b734fb0760f49ab41fdd6f9129f84d7caa1 /users/Profpatsch/netstring/default.nix | |
parent | ea9982d9eab50ee724eb1e5bae000911b219472f (diff) |
feat(users/Profpatsch/netstring): add rust to_netstring r/2137
Change-Id: I539472fc9ebc3ebe6c34e01fde9c08d3e2e3558c Reviewed-on: https://cl.tvl.fyi/c/depot/+/2431 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
Diffstat (limited to 'users/Profpatsch/netstring/default.nix')
-rw-r--r-- | users/Profpatsch/netstring/default.nix | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/users/Profpatsch/netstring/default.nix b/users/Profpatsch/netstring/default.nix index 35345978a318..3cf882d5a279 100644 --- a/users/Profpatsch/netstring/default.nix +++ b/users/Profpatsch/netstring/default.nix @@ -36,12 +36,29 @@ let return res ''; + rust-netstring = depot.users.Profpatsch.writers.rustSimpleLib { + name = "netstring"; + } '' + pub fn to_netstring(s: &[u8]) -> Vec<u8> { + let len = s.len(); + // length of the integer as ascii + let i_len = ((len as f64).log10() as usize) + 1; + let ns_len = i_len + 1 + len + 1; + let mut res = Vec::with_capacity(ns_len); + res.extend_from_slice(format!("{}:", len).as_bytes()); + res.extend_from_slice(s); + res.push(b','); + res + } + ''; + tests = import ./tests.nix { inherit depot pkgs lib python-netstring + rust-netstring toNetstring toNetstringKeyVal ; @@ -52,6 +69,7 @@ in { toNetstring toNetstringKeyVal python-netstring + rust-netstring tests ; |