#rust
Вопрос:
impl str { ... #[inline] #[stable(feature = "rust1", since = "1.0.0")] pub fn parselt;F: FromStrgt;(amp;self) -gt; Resultlt;F, F::Errgt; { FromStr::from_str(self) } }
Какой смысл вызывать метод интерфейсов from_str
Комментарии:
1. Это позволяет анализировать произвольные типы, включая пользовательские типы, при условии, что они реализуются
FromStr
.2. Это означает , что
"foo".parse()
это сахар дляFromStr::from_str("foo")
, и"foo".parse::lt;MyTypegt;()
это сахар дляlt;MyType as FromStrgt;::from_str("foo")
. В первых двух примерах тип для преобразования определяется из контекста, а во вторых двух он задан явно. В обоих случаях тип для преобразования должен быть реализованFromStr
, но сутьparse()
в том, что он проще для глаз и позволяет использовать в цепных выражениях.3. спасибо, я немного понимаю. Поскольку я сначала встретил пример функции someone_function(«foo».parse().unwrap ()), я перешел к str:: parse, но не смог увидеть, что было возвращено. Позже я обнаружил, что будет некоторая функция для неявного вызова параметра from::from_str, это всегда меня озадачивало. Теперь все немного прояснилось
4. Да, вы наблюдали вывод типа Раста в действии. В этом случае , если
someone_function()
принимаетSomeType
, то"foo".parse().unwrap()
будет автоматически выведено значение"foo".parse::lt;SomeTypegt;().unwrap()
.