Явно вводится переменная , а не приведение типа.
Как подробно объясняется в другом месте, Iterator::collect
требует знания конкретного типа для сбора.
Приведение типов, например, выполняемое as
, требует преобразования из одного типа в другой. Вы указали тип second (String
), но компилятор все еще не может определить, каким должен быть тип first .
Turbofish
Синтаксис, который вы хотите использовать в сегодняшнем Rust, - turbofish :
use std::fs;
fn main() {
let s = fs::read_to_string("tt.txt").expect("Wow");
println!(
"{}",
s.chars().skip(0).take(s.len() - 2).collect::<String>()
);
}
Тип Надпись
В качестве ночной функции вы также можете использовать экспериментальную надпись типа :
#![feature(type_ascription)]
use std::fs;
fn main() {
let s = fs::read_to_string("tt.txt").expect("Wow");
println!(
"{}",
s.chars().skip(0).take(s.len() - 2).collect(): String
);
}
Другое
Вам не нужно писать read_string
.