UPDATE Use .as_str()
Reason .as_str()
is more concise and enforces stricter type checking. The trait as_ref
is implemented for multiple types and its behaviour could be changed for type String
, leading to unexpected results. Similarly, if the input argument changes type, the compiler will not signal a problem when that type implements the trait as_ref
.
The docs suggest to use as_str
as well https://doc.rust-lang.org/std/string/struct.String.html, https://doc.rust-lang.org/std/primitive.str.html
Old answer:
as_slice
is deprecated, you should now use the trait std::convert::AsRef
instead:
match stringthing.as_ref() { "a" => println!("0"), "b" => println!("1"), "c" => println!("2"), _ => println!("something else!"), }
Note that you also have to explicitly handle the catch-all case.