What you're looking for is here. Searching for 'deserialize' on the serde crate gives serde::Deserialize as the top results, and you can see it is implemented for String down below (as well as a whole host of other types it is also implemented for.) In general, because Deserialize and String are both foreign types, the String impl of Deserialize must either be in std or in serde.
A foreign type is one that is not defined in your crate. If you're using std and serde as a library, all of the types in either of them are foreign. This is important because you cannot implement foreign traits on foreign types, which is what would have to happen if you wanted to provide your own impl Deserialize for String.