From e1d5509bf381d978a1894b6ba869c3b56dd3eeca Mon Sep 17 00:00:00 2001 From: Brad Gibson Date: Wed, 2 May 2018 19:16:29 -0700 Subject: [PATCH] Added comments providing justification for support of calling deref_* with wrong variant --- src/libcore/tests/result.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libcore/tests/result.rs b/src/libcore/tests/result.rs index fd0dd21401b8..f8b5ea5e16e4 100644 --- a/src/libcore/tests/result.rs +++ b/src/libcore/tests/result.rs @@ -290,7 +290,11 @@ fn test_result_deref() { let expected_result = Result::Err::<&u32, &[i32]>(&[5, 4, 3, 2, 1][..]); assert_eq!(ref_err.deref(), expected_result); - // *Odd corner cases (tested for completeness)* + // The following cases test calling deref_* with the wrong variant (i.e. + // `deref_ok()` with a `Result::Err()`, or `deref_err()` with a `Result::Ok()`. + // While unusual, these cases are supported to ensure that an `inner_deref` + // call can still be made even when one of the Result types does not implement + // `Deref` (for example, std::io::Error). // &Result::Ok(T).deref_err() -> // Result<&T, &E::Deref::Target>::Ok(&T)