From 769aa0a7b378a7b71f5bcbec3485fe171ff4f3b9 Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Fri, 12 Dec 2014 13:23:21 +1300 Subject: Remove the double auto-ref on arrays/strings as receivers Part of #18469 [breaking-change] A receiver will only ever get a single auto-reference. Previously arrays and strings would get two, e.g., [T] would be auto-ref'ed to &&[T]. This is usually apparent when a trait is implemented for `&[T]` and has a method takes self by reference. The usual solution is to implement the trait for `[T]` (the DST form). --- src/libstd/ascii.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/ascii.rs b/src/libstd/ascii.rs index ad2167214a7..81e8e4e4d7c 100644 --- a/src/libstd/ascii.rs +++ b/src/libstd/ascii.rs @@ -170,7 +170,7 @@ impl<'a> fmt::Show for Ascii { /// Trait for converting into an ascii type. #[experimental = "may be replaced by generic conversion traits"] -pub trait AsciiCast { +pub trait AsciiCast for Sized? { /// Convert to an ascii type, panic on non-ASCII input. #[inline] fn to_ascii(&self) -> T { @@ -196,10 +196,10 @@ pub trait AsciiCast { } #[experimental = "may be replaced by generic conversion traits"] -impl<'a> AsciiCast<&'a[Ascii]> for &'a [u8] { +impl<'a> AsciiCast<&'a[Ascii]> for [u8] { #[inline] unsafe fn to_ascii_nocheck(&self) -> &'a[Ascii] { - mem::transmute(*self) + mem::transmute(self) } #[inline] @@ -212,10 +212,10 @@ impl<'a> AsciiCast<&'a[Ascii]> for &'a [u8] { } #[experimental = "may be replaced by generic conversion traits"] -impl<'a> AsciiCast<&'a [Ascii]> for &'a str { +impl<'a> AsciiCast<&'a [Ascii]> for str { #[inline] unsafe fn to_ascii_nocheck(&self) -> &'a [Ascii] { - mem::transmute(*self) + mem::transmute(self) } #[inline] -- cgit 1.4.1-3-g733a5