@@ -37,7 +37,7 @@ thread_local! {
3737}
3838
3939pub fn channel < T > ( ) -> Result < ( IpcSender < T > , IpcReceiver < T > ) , Error >
40- where T : Deserialize + Serialize {
40+ where T : for < ' de > Deserialize < ' de > + Serialize {
4141 let ( os_sender, os_receiver) = try!( platform:: channel ( ) ) ;
4242 let ipc_receiver = IpcReceiver {
4343 os_receiver : os_receiver,
@@ -62,12 +62,12 @@ pub fn bytes_channel() -> Result<(IpcBytesSender, IpcBytesReceiver),Error> {
6262}
6363
6464#[ derive( Debug ) ]
65- pub struct IpcReceiver < T > where T : Deserialize + Serialize {
65+ pub struct IpcReceiver < T > where T : for < ' de > Deserialize < ' de > + Serialize {
6666 os_receiver : OsIpcReceiver ,
6767 phantom : PhantomData < T > ,
6868}
6969
70- impl < T > IpcReceiver < T > where T : Deserialize + Serialize {
70+ impl < T > IpcReceiver < T > where T : for < ' de > Deserialize < ' de > + Serialize {
7171 pub fn recv ( & self ) -> Result < T , bincode:: Error > {
7272 let ( data, os_ipc_channels, os_ipc_shared_memory_regions) = try!( self . os_receiver . recv ( ) ) ;
7373 OpaqueIpcMessage :: new ( data, os_ipc_channels, os_ipc_shared_memory_regions) . to ( )
@@ -86,8 +86,8 @@ impl<T> IpcReceiver<T> where T: Deserialize + Serialize {
8686 }
8787}
8888
89- impl < T > Deserialize for IpcReceiver < T > where T : Deserialize + Serialize {
90- fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error > where D : Deserializer {
89+ impl < ' de , T > Deserialize < ' de > for IpcReceiver < T > where T : for < ' dde > Deserialize < ' dde > + Serialize {
90+ fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error > where D : Deserializer < ' de > {
9191 let index: usize = try!( Deserialize :: deserialize ( deserializer) ) ;
9292 let os_receiver =
9393 OS_IPC_CHANNELS_FOR_DESERIALIZATION . with ( |os_ipc_channels_for_deserialization| {
@@ -102,7 +102,7 @@ impl<T> Deserialize for IpcReceiver<T> where T: Deserialize + Serialize {
102102 }
103103}
104104
105- impl < T > Serialize for IpcReceiver < T > where T : Deserialize + Serialize {
105+ impl < T > Serialize for IpcReceiver < T > where T : for < ' de > Deserialize < ' de > + Serialize {
106106 fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error > where S : Serializer {
107107 let index = OS_IPC_CHANNELS_FOR_SERIALIZATION . with ( |os_ipc_channels_for_serialization| {
108108 let mut os_ipc_channels_for_serialization =
@@ -173,8 +173,8 @@ impl<T> IpcSender<T> where T: Serialize {
173173 }
174174}
175175
176- impl < T > Deserialize for IpcSender < T > where T : Serialize {
177- fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error > where D : Deserializer {
176+ impl < ' de , T > Deserialize < ' de > for IpcSender < T > where T : Serialize {
177+ fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error > where D : Deserializer < ' de > {
178178 let os_sender = try!( deserialize_os_ipc_sender ( deserializer) ) ;
179179 Ok ( IpcSender {
180180 os_sender : os_sender,
@@ -201,7 +201,7 @@ impl IpcReceiverSet {
201201 }
202202
203203 pub fn add < T > ( & mut self , receiver : IpcReceiver < T > ) -> Result < u64 , Error >
204- where T : Deserialize + Serialize {
204+ where T : for < ' de > Deserialize < ' de > + Serialize {
205205 Ok ( try!( self . os_receiver_set . add ( receiver. os_receiver ) ) )
206206 }
207207
@@ -249,8 +249,8 @@ impl Deref for IpcSharedMemory {
249249 }
250250}
251251
252- impl Deserialize for IpcSharedMemory {
253- fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error > where D : Deserializer {
252+ impl < ' de > Deserialize < ' de > for IpcSharedMemory {
253+ fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error > where D : Deserializer < ' de > {
254254 let index: usize = try!( Deserialize :: deserialize ( deserializer) ) ;
255255 let os_shared_memory = OS_IPC_SHARED_MEMORY_REGIONS_FOR_DESERIALIZATION . with (
256256 |os_ipc_shared_memory_regions_for_deserialization| {
@@ -342,17 +342,15 @@ impl OpaqueIpcMessage {
342342 }
343343 }
344344
345- pub fn to < T > ( mut self ) -> Result < T , bincode:: Error > where T : Deserialize + Serialize {
345+ pub fn to < T > ( mut self ) -> Result < T , bincode:: Error > where T : for < ' de > Deserialize < ' de > + Serialize {
346346 OS_IPC_CHANNELS_FOR_DESERIALIZATION . with ( |os_ipc_channels_for_deserialization| {
347347 OS_IPC_SHARED_MEMORY_REGIONS_FOR_DESERIALIZATION . with (
348348 |os_ipc_shared_memory_regions_for_deserialization| {
349349 mem:: swap ( & mut * os_ipc_channels_for_deserialization. borrow_mut ( ) ,
350350 & mut self . os_ipc_channels ) ;
351351 mem:: swap ( & mut * os_ipc_shared_memory_regions_for_deserialization. borrow_mut ( ) ,
352352 & mut self . os_ipc_shared_memory_regions ) ;
353- let mut data = & * self . data ;
354- let mut deserializer = bincode:: Deserializer :: new ( & mut data, bincode:: Infinite ) ;
355- let result = Deserialize :: deserialize ( & mut deserializer) ;
353+ let result = bincode:: deserialize ( & self . data [ ..] ) ;
356354 mem:: swap ( & mut * os_ipc_shared_memory_regions_for_deserialization. borrow_mut ( ) ,
357355 & mut self . os_ipc_shared_memory_regions ) ;
358356 mem:: swap ( & mut * os_ipc_channels_for_deserialization. borrow_mut ( ) ,
@@ -371,16 +369,16 @@ pub struct OpaqueIpcSender {
371369}
372370
373371impl OpaqueIpcSender {
374- pub fn to < T > ( self ) -> IpcSender < T > where T : Deserialize + Serialize {
372+ pub fn to < ' de , T > ( self ) -> IpcSender < T > where T : Deserialize < ' de > + Serialize {
375373 IpcSender {
376374 os_sender : self . os_sender ,
377375 phantom : PhantomData ,
378376 }
379377 }
380378}
381379
382- impl Deserialize for OpaqueIpcSender {
383- fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error > where D : Deserializer {
380+ impl < ' de > Deserialize < ' de > for OpaqueIpcSender {
381+ fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error > where D : Deserializer < ' de > {
384382 let os_sender = try!( deserialize_os_ipc_sender ( deserializer) ) ;
385383 Ok ( OpaqueIpcSender {
386384 os_sender : os_sender,
@@ -404,7 +402,7 @@ pub struct IpcOneShotServer<T> {
404402 phantom : PhantomData < T > ,
405403}
406404
407- impl < T > IpcOneShotServer < T > where T : Deserialize + Serialize {
405+ impl < T > IpcOneShotServer < T > where T : for < ' de > Deserialize < ' de > + Serialize {
408406 pub fn new ( ) -> Result < ( IpcOneShotServer < T > , String ) , Error > {
409407 let ( os_server, name) = try!( OsIpcOneShotServer :: new ( ) ) ;
410408 Ok ( ( IpcOneShotServer {
@@ -446,8 +444,8 @@ impl IpcBytesReceiver {
446444 }
447445}
448446
449- impl Deserialize for IpcBytesReceiver {
450- fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error > where D : Deserializer {
447+ impl < ' de > Deserialize < ' de > for IpcBytesReceiver {
448+ fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error > where D : Deserializer < ' de > {
451449 let index: usize = try!( Deserialize :: deserialize ( deserializer) ) ;
452450 let os_receiver =
453451 OS_IPC_CHANNELS_FOR_DESERIALIZATION . with ( |os_ipc_channels_for_deserialization| {
@@ -488,8 +486,8 @@ impl Clone for IpcBytesSender {
488486 }
489487}
490488
491- impl Deserialize for IpcBytesSender {
492- fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error > where D : Deserializer {
489+ impl < ' de > Deserialize < ' de > for IpcBytesSender {
490+ fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error > where D : Deserializer < ' de > {
493491 let os_sender = try!( deserialize_os_ipc_sender ( deserializer) ) ;
494492 Ok ( IpcBytesSender {
495493 os_sender : os_sender,
@@ -522,8 +520,8 @@ fn serialize_os_ipc_sender<S>(os_ipc_sender: &OsIpcSender, serializer: S)
522520 index. serialize ( serializer)
523521}
524522
525- fn deserialize_os_ipc_sender < D > ( deserializer : D )
526- -> Result < OsIpcSender , D :: Error > where D : Deserializer {
523+ fn deserialize_os_ipc_sender < ' de , D > ( deserializer : D )
524+ -> Result < OsIpcSender , D :: Error > where D : Deserializer < ' de > {
527525 let index: usize = try!( Deserialize :: deserialize ( deserializer) ) ;
528526 OS_IPC_CHANNELS_FOR_DESERIALIZATION . with ( |os_ipc_channels_for_deserialization| {
529527 // FIXME(pcwalton): This could panic if the data was corrupt and the index was out of
0 commit comments