1
+
2
+ // Ne pas faire de warning s'il y a des parenthèses en trop autour des conditions des if
3
+ #![ allow( unused_parens) ]
4
+
5
+ // Ne pas faire de warning si des fonctions ne sont pas appelées
6
+ #![ warn( dead_code) ]
7
+
8
+
9
+ use std:: str;
10
+
11
+ ///////////////////////////////////////////////////////////////////////////////////
12
+ // Source: https://gist.github.com/jimmychu0807/9a89355e642afad0d2aeda52e6ad2424 //
13
+ ///////////////////////////////////////////////////////////////////////////////////
14
+ fn string_conversions ( ) {
15
+ // -- FROM: vec of chars --
16
+ let src1: Vec < char > = vec ! [ 'j' , '{' , '"' , 'i' , 'm' , 'm' , 'y' , '"' , '}' ] ;
17
+ // to String
18
+ let string1: String = src1. iter ( ) . collect :: < String > ( ) ;
19
+ // to str
20
+ let str1: & str = & src1. iter ( ) . collect :: < String > ( ) ;
21
+ // to vec of byte
22
+ let byte1: Vec < u8 > = src1. iter ( ) . map ( |c| * c as u8 ) . collect :: < Vec < _ > > ( ) ;
23
+ println ! ( "Vec<char>:{:?} | String:{:?}, str:{:?}, Vec<u8>:{:?}" , src1, string1, str1, byte1) ;
24
+
25
+ // -- FROM: vec of bytes --
26
+ // in rust, this is a slice
27
+ // b - byte, r - raw string, br - byte of raw string
28
+ let src2: Vec < u8 > = br#"e{"ddie"}"# . to_vec ( ) ;
29
+ // to String
30
+ // from_utf8 consume the vector of bytes
31
+ let string2: String = String :: from_utf8 ( src2. clone ( ) ) . unwrap ( ) ;
32
+ // to str
33
+ let str2: & str = str:: from_utf8 ( & src2) . unwrap ( ) ;
34
+ // to vec of chars
35
+ let char2: Vec < char > = src2. iter ( ) . map ( |b| * b as char ) . collect :: < Vec < _ > > ( ) ;
36
+ println ! ( "Vec<u8>:{:?} | String:{:?}, str:{:?}, Vec<char>:{:?}" , src2, string2, str2, char2) ;
37
+
38
+ // -- FROM: String --
39
+ let src3: String = String :: from ( r#"o{"livia"}"# ) ;
40
+ let str3: & str = & src3;
41
+ let char3: Vec < char > = src3. chars ( ) . collect :: < Vec < _ > > ( ) ;
42
+ let byte3: Vec < u8 > = src3. as_bytes ( ) . to_vec ( ) ;
43
+ println ! ( "String:{:?} | str:{:?}, Vec<char>:{:?}, Vec<u8>:{:?}" , src3, str3, char3, byte3) ;
44
+
45
+ // -- FROM: str --
46
+ let src4: & str = r#"g{'race'}"# ;
47
+ let string4 = String :: from ( src4) ;
48
+ let char4: Vec < char > = src4. chars ( ) . collect ( ) ;
49
+ let byte4: Vec < u8 > = src4. as_bytes ( ) . to_vec ( ) ;
50
+ println ! ( "str:{:?} | String:{:?}, Vec<char>:{:?}, Vec<u8>:{:?}" , src4, string4, char4, byte4) ;
51
+ }
0 commit comments