about summary refs log tree commit diff
path: root/users/Profpatsch/netstring/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'users/Profpatsch/netstring/default.nix')
-rw-r--r--users/Profpatsch/netstring/default.nix18
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
       ;