about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-07-03 17:11:39 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-07-03 17:12:02 -0700
commitaf38333f75416e8599d6534ded7d73ae121f3207 (patch)
treefef7bc8d5af0bbf4be2433f9e8ccdbc3e2e4b5c0 /src/libstd
parent0f5eaef5fb2443acd3ea67250c953839c3d04d38 (diff)
rustc: Speed up def ID parsing in the metadata
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 {