Jenis unit yang diharapkan '()', ditemukan 'enum std :: option :: Option'
Aug 30 2020
Saya memiliki fungsi yang terlihat seperti ini:
pub fn new(s: String) -> Option<i32> {
if s.len() > 10 {
None
}
Some(10)
}
Ketika saya mencoba untuk mengkompilasi ini, saya mendapatkan pesan kesalahan berikut:
7 | / if s.len() > 10 {
8 | | None
| | ^^^^ expected `()`, found enum `std::option::Option`
9 | | }
| | -- help: consider using a semicolon here
| |_________|
| expected this to be `()`
|
= note: expected unit type `()`
found enum `std::option::Option<_>`
Saya tidak yakin apa yang saya lakukan salah. Bantuan apa pun akan dihargai
Jawaban
3 Prime_Aqasix Aug 30 2020 at 13:28
Tidak ada ;Pengembalian hanya dapat digunakan di akhir blok.
Untuk mengatasinya, Anda dapat:
pub fn new(s: String) -> Option<i32> {
if s.len() > 10 {
return None; // Add a early return here
}
Some(10)
}
Atau
pub fn new(s: String) -> Option<i32> {
if s.len() > 10 {
None
} else {
Some(10)
} // This is now the end of the function block.
}
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'