What is the difference between String and &str in rust?