@@ -15,6 +15,8 @@ use std::ffi::{CStr, CString};
15
15
16
16
use ascii_char:: AsciiChar ;
17
17
use ascii_str:: { AsAsciiStr , AsAsciiStrError , AsciiStr } ;
18
+ use std:: rc:: Rc ;
19
+ use std:: sync:: Arc ;
18
20
19
21
/// A growable string stored as an ASCII encoded buffer.
20
22
#[ derive( Clone , Default , PartialEq , Eq , PartialOrd , Ord , Hash ) ]
@@ -513,6 +515,13 @@ impl Into<Vec<u8>> for AsciiString {
513
515
}
514
516
}
515
517
518
+ #[ allow( clippy:: from_over_into) ]
519
+ impl Into < Vec < AsciiChar > > for AsciiString {
520
+ fn into ( self ) -> Vec < AsciiChar > {
521
+ self . vec
522
+ }
523
+ }
524
+
516
525
impl < ' a > From < & ' a AsciiStr > for AsciiString {
517
526
#[ inline]
518
527
fn from ( s : & ' a AsciiStr ) -> Self {
@@ -553,6 +562,24 @@ impl From<AsciiString> for Box<AsciiStr> {
553
562
}
554
563
}
555
564
565
+ #[ allow( clippy:: from_over_into) ]
566
+ impl Into < Rc < AsciiStr > > for AsciiString {
567
+ fn into ( self ) -> Rc < AsciiStr > {
568
+ let var: Rc < [ AsciiChar ] > = self . vec . into ( ) ;
569
+ // SAFETY: AsciiStr is repr(transparent) and thus has the same layout as [AsciiChar]
570
+ unsafe { Rc :: from_raw ( Rc :: into_raw ( var) as * const AsciiStr ) }
571
+ }
572
+ }
573
+
574
+ #[ allow( clippy:: from_over_into) ]
575
+ impl Into < Arc < AsciiStr > > for AsciiString {
576
+ fn into ( self ) -> Arc < AsciiStr > {
577
+ let var: Arc < [ AsciiChar ] > = self . vec . into ( ) ;
578
+ // SAFETY: AsciiStr is repr(transparent) and thus has the same layout as [AsciiChar]
579
+ unsafe { Arc :: from_raw ( Arc :: into_raw ( var) as * const AsciiStr ) }
580
+ }
581
+ }
582
+
556
583
impl < ' a > From < Cow < ' a , AsciiStr > > for AsciiString {
557
584
fn from ( cow : Cow < ' a , AsciiStr > ) -> AsciiString {
558
585
cow. into_owned ( )
0 commit comments