about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/ebml.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libstd/ebml.rs b/src/libstd/ebml.rs
index 70d974f255f..c2b1c61f08f 100644
--- a/src/libstd/ebml.rs
+++ b/src/libstd/ebml.rs
@@ -26,6 +26,7 @@ export writer;
 export serializer;
 export ebml_deserializer;
 export deserializer;
+export with_doc_data;
 
 type ebml_tag = {id: uint, size: uint};
 
@@ -121,6 +122,10 @@ fn tagged_docs(d: doc, tg: uint, it: fn(doc)) {
 
 fn doc_data(d: doc) -> ~[u8] { vec::slice::<u8>(*d.data, d.start, d.end) }
 
+fn with_doc_data<T>(d: doc, f: fn(x:&[u8]) -> T) -> T {
+    ret f(vec::view::<u8>(*d.data, d.start, d.end));
+}
+
 fn doc_as_str(d: doc) -> str { ret str::from_bytes(doc_data(d)); }
 
 fn doc_as_u8(d: doc) -> u8 {