From f6e739a54ca9e7a18c0f95d40a735804757d1a6a Mon Sep 17 00:00:00 2001 From: Alexis Beingessner Date: Tue, 4 Aug 2015 15:09:47 -0700 Subject: [PATCH] Fix variance ordering I thought this was actually a huge error and I'd have to rewrite a bunch but it looks like everything else was correct. Closes #27457 --- subtyping.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subtyping.md b/subtyping.md index 3c57297..65dcb6a 100644 --- a/subtyping.md +++ b/subtyping.md @@ -93,8 +93,8 @@ fn main() { The signature of `overwrite` is clearly valid: it takes mutable references to two values of the same type, and overwrites one with the other. If `&mut T` was -variant over T, then `&mut &'a str` would be a subtype of `&mut &'static str`, -since `&'a str` is a subtype of `&'static str`. Therefore the lifetime of +variant over T, then `&mut &'static str` would be a subtype of `&mut &'a str`, +since `&'static str` is a subtype of `&'a str`. Therefore the lifetime of `forever_str` would successfully be "shrunk" down to the shorter lifetime of `string`, and `overwrite` would be called successfully. `string` would subsequently be dropped, and `forever_str` would point to freed memory when we