This code has the same error:

```rust
struct A<'a> { a: &'a mut int }                        
struct B<'a> { a: A<'a> }                              
impl<'a> B<'a> {                                       
    fn foo(&mut self) -> &'a mut int { &mut *self.a.a }
}                                                      
```

I am dubious that this `transmute` is indeed safe, I'd want to think about it some more.

cc @nikomatsakis, you may be interested in this code snippet.