diff --git a/rust/src/value.rs b/rust/src/value.rs
index fb022d0bef6c904806f607908069893d765dc117..a50568789bb65433e0913e909c7304f1f8697de2 100644
--- a/rust/src/value.rs
+++ b/rust/src/value.rs
@@ -49,6 +49,14 @@ impl Value {
         }
     }
 
+    pub fn as_bytes(&self) -> Vec<u8> {
+        unsafe {
+            let dv = dht_value_get_data(self);
+            let slice = slice::from_raw_parts_mut(dv.data as *mut _, dv.size);
+            slice.to_vec()
+        }
+    }
+
     pub fn boxed(&mut self) -> Box<Value> {
         unsafe {
             Box::from_raw(dht_value_ref(self))