summary refs log tree commit diff
path: root/src/libstd/serialization.rs
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2012-03-16 16:25:36 +0100
committerMarijn Haverbeke <marijnh@gmail.com>2012-03-16 17:05:29 +0100
commit35fc4a4291dfc8d33b3b500ff0f1b2748ddd5ff0 (patch)
tree96bcbca364f4cc4d68610271719017b0841c5f97 /src/libstd/serialization.rs
parent25c2be0ff477c5bd6c71f4dc598d7a94c08bb724 (diff)
downloadrust-35fc4a4291dfc8d33b3b500ff0f1b2748ddd5ff0.tar.gz
rust-35fc4a4291dfc8d33b3b500ff0f1b2748ddd5ff0.zip
Check kind bounds when calling methods
Closes #1915
Diffstat (limited to 'src/libstd/serialization.rs')
-rw-r--r--src/libstd/serialization.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/libstd/serialization.rs b/src/libstd/serialization.rs
index 3734b8db2c0..43059ca7828 100644
--- a/src/libstd/serialization.rs
+++ b/src/libstd/serialization.rs
@@ -93,7 +93,7 @@ fn emit_from_vec<S: serializer, T>(s: S, v: [T], f: fn(T)) {
     }
 }
 
-fn read_to_vec<D: deserializer, T>(d: D, f: fn() -> T) -> [T] {
+fn read_to_vec<D: deserializer, T: copy>(d: D, f: fn() -> T) -> [T] {
     d.read_vec {|len|
         vec::from_fn(len) {|i|
             d.read_vec_elt(i) {|| f() }
@@ -108,7 +108,7 @@ impl serializer_helpers<S: serializer> for S {
 }
 
 impl deserializer_helpers<D: deserializer> for D {
-    fn read_to_vec<T>(f: fn() -> T) -> [T] {
+    fn read_to_vec<T: copy>(f: fn() -> T) -> [T] {
         read_to_vec(self, f)
     }
 }
@@ -252,7 +252,8 @@ fn serialize_option<S: serializer,T>(s: S, v: option<T>, st: fn(T)) {
     }
 }
 
-fn deserialize_option<D: deserializer,T>(d: D, st: fn() -> T) -> option<T> {
+fn deserialize_option<D: deserializer,T: copy>(d: D, st: fn() -> T)
+    -> option<T> {
     d.read_enum("option") {||
         d.read_enum_variant {|i|
             alt check i {