Hi Erick, Thanks for the heads-up. I should've be more specific on the title. Yes, I'm only after the offending wrapper function.
-Ed On Sat, Mar 22, 2014 at 10:54 PM, Erick Tryzelaar <[email protected] > wrote: > Hello Edward, > > I'm not sure how to help with this variance bug, but I want to warn you > (and it seems everyone else :)) that at least 2 other people have said they > are doing a Json refactor: > > https://github.com/mozilla/rust/pull/12740 > https://github.com/mozilla/rust/pull/12936 > > If all your touching are these constructors, then it's probably not much > of an issue, but if you are doing more there's a chance you could run into > each other. > > -Erick > > > > On Sat, Mar 22, 2014 at 7:24 AM, Edward Wang <[email protected]>wrote: > >> Hi, >> >> I'm in the process of fixing a `ty_trait` variance inference bug, which >> will void the following code in json.rs: >> >> pub struct Encoder<'a> { >> priv wr: &'a mut io::Writer, >> priv error: io::IoResult<()>, >> } >> impl<'a> Encoder<'a> { >> pub fn new<'a>(wr: &'a mut io::Writer) -> Encoder<'a> { >> Encoder { wr: wr, error: Ok(()) } >> } >> >> pub fn buffer_encode<T:Encodable<Encoder<'a>>>(to_encode_object: &T) >> -> ~[u8] { >> let mut m = MemWriter::new(); >> { >> let mut encoder = Encoder::new(&mut m as &mut io::Writer); >> to_encode_object.encode(&mut encoder); >> } >> m.unwrap() >> } >> } >> >> If taking a close look, m here is merely a local variable but Encoder<'a> >> requires a lifetime at least 'a. A naive fix would be: >> >> let mut encoder = Encoder::new(cast::transmute_mut_region(&mut m)); >> >> But of course, it is very uncivilized :) Any suggestion on how to >> refactor this piece of code so it won't violate the lifetime requirement? >> >> Regards, >> Edward >> >> _______________________________________________ >> Rust-dev mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/rust-dev >> >> >
_______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
