rust - 如何使任何类型的parms生锈
问题描述
我将read_input
crate 添加到我的依赖项中并编写了以下代码:
let username: String = input().repeat_msg("Please input your name: ").get();
当我尝试在终端中打印它时,它会打印我输入的内容,但是当我尝试通过一个函数使用它时:
pub fn sub(values: String) {
// code
}
我不能接受它,它说()
当它在 top 中明确表示时我已经给了它一个类型变量String
,所以我想知道我是否可以通过转换或某种方式从输入中获取文本,或者在函数中能够获取任何类型的参数。
所以我想知道一种在函数中获取任何类型参数的方法,它可以是 ai32
或 aString
或如何将()
类型变量转换为String
.
完整代码
maint.rs:
use read_input::prelude::*;
mod sub;
use sub::lexar;
fn main() {
println!("Welcome Rice Lang");
let mut done = false;
let ctrldkey = false;
while !done {
let mut input: String = input().msg("> ").get();
println!("{}", input);
if ctrldkey == true {
done = true;
}
}
}
副:
pub fn sub(values: String) {
print!("{}", values)
}
错误:
input = sub(input);
^^^^^^^^^^^^ expected struct `String`, found `()`
解决方案
您遇到的问题不是您无法调用该函数。如果您尝试这样做:
sub(input);
然后它会工作。这意味着您可以调用该函数。问题是您试图分配input
函数返回的内容。但是该函数不返回任何内容,也称为()
. 而input
变量实际上是 aString
所以你只能把 aString
放到它上面。
将错误类型分配给变量的示例将给出类似的错误:
let mut input = String::from("example string");
// this gives an error because we are trying to
// put a non-String value into input
input = 6;
要拥有一个返回非()
(默认)类型的函数,您必须像这样指定返回类型:
fn this_returns_a_string() -> String {
String::from("from function")
}
let mut input = String::from("example string");
// this will work
input = this_returns_a_string();
推荐阅读
- java - 使用 MyBatis Velocity 的动态 SQL 请求
- javascript - 通过ajax松散的onclick事件重新加载DIV
- access-database-engine - windows 2016 server 是否支持 Microsoft Access Database Engine 2010 Redistributable
- html - css 内容中的元标记:''; 财产
- c++ - 递归地执行多次自我回避行走
- django - 带有 Nginx Gunicorn Daphne Channels Redis 的 SSL 上的 WebSocket wss://
- bash - 如何正确使用包含多个参数(可能包含空格)的 bash 变量
- flutter - 用户自定义表单 - Flutter
- python - 将儒略日转换为当前日期和时间
- javascript - 无法访问 Select React 中的 MenuItem 属性