这个想法是发送一组向量的字符,然后让该函数显示当前正确的猜测。
这是我的主要爱好:
def sign_s3_upload(request):
object_name = request.GET['objectName']
content_type = mimetypes.guess_type(object_name)[0]
if content_type == 'audio/x-wav':
content_type = 'audio/wav'
signed_url = conn.generate_url(
300,
"PUT",
settings.AWS_STORAGE_BUCKET_NAME,
'uploads/' + object_name,
headers = {'Content-Type': content_type,
'x-amz-acl': 'public-read',
})
return HttpResponse(json.dumps({'signedUrl': signed_url}))
这是函数:
fn main() {
let mut guessedLetters = vec![];
displayWord(guessedLetters);
}
我不知道我该在fn displayWord(correctGuess: Vec<char>) {
let mut currentWord = String::new();
for x in 0..5 {
currentWord.push(correctGuess[x]);
}
println!("Current guesses: {}", currentWord);
}
的参数中写什么。
答案 0 :(得分:2)
您的代码有些错误。
第一个错误很简单:
--> src/main.rs:38:25
|
38 | displayWord(guessed_Letters);
| ^^^^^^^^^^^^^^^ expected char, found enum `std::option::Option`
|
= note: expected type `std::vec::Vec<char>`
found type `std::vec::Vec<std::option::Option<char>>`
您编写的函数期望矢量为字符...但是您要向其传递Option<char>
的矢量。这是在这里发生的:
guessed_Letters.push(line.chars().nth(0));
According to the documentation,nth
方法返回一个Option
。此处的快速解决方案是unwrap
Option
以获得基础值:
guessed_Letters.push(line.chars().nth(0).unwrap());
您的下一个错误是:
error[E0382]: use of moved value: `guessed_Letters`
--> src/main.rs:38:25
|
38 | displayWord(guessed_Letters);
| ^^^^^^^^^^^^^^^ value moved here in previous iteration of loop
|
= note: move occurs because `guessed_Letters` has type `std::vec::Vec<char>`, which does not implement the `Copy` trait
这是在循环的第一次迭代中转移向量的所有权,编译器告诉您,后续迭代将违反Rust的所有权规则。
这里的解决方案是通过引用传递向量 :
displayWord(&guessed_Letters);
..并且您的方法还应该接受引用:
fn displayWord(correctGuess: &Vec<char>) {
let mut currentWord = String::new();
for x in 0..5 {
currentWord.push(correctGuess[x]);
}
println!("Current guesses: {}", currentWord);
}
可以缩短以使用切片并仍然可以使用:
fn displayWord(correctGuess: &[char]) {