我不是想写复杂的代码,我只是想了解这里发生了什么(或没有发生什么)。我检查了其他问题,但它们都有复杂的情况,我认为这种情况是迄今为止最简单的。
我有以下代码:
let one_step: f32 = "4.0".parse().unwrap();
let extra_step: u32 = one_step as u32;
println!("{:?}", extra_step);
在我看来,我们有一个
为什么我不能这么做?实际上,这不是一回事吗?
let single_step: u32 = "4.0".parse().unwrap() as u32;
println!("{:?}", single_step);
如果我尝试运行此代码,我得到这个错误:
error[E0619]: the type of this value must be known in this context
--> src/main.rs:6:27
|
6 | let single_step: u32 = "4.0".parse().unwrap() as u32;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
看起来需要我们将操作分成两部分。
问题是,parse
不仅仅是为f32
定义的parse
可以定义所有类型(特别是实现FromStr
的任何类型)。那么Rust怎么知道parse
应该返回f32
,而不是其他类型的呢?
在第一个示例中,它知道这一点,因为oneStep
被声明为具有类型f32
,所以Rust可以推断它应该调用parse
,并将f32
作为其类型参数。在第二个示例中,f32
没有在代码中提到,因此Rust不可能找到它。
您也可以直接传递它,而不是从变量的类型推断类型参数。这样,它将在一个步骤中工作:
let singleStep: u32 = "4.0".parse::<f32>().unwrap() as u32;
问题内容: SimpleDateFormat: 抛出的异常: 有任何想法吗? 编辑: 感谢您的快速解答。你们都是正确的,我只是错过了SimpleDateFormat文档中的一个关键句子-我可能应该把它称为一天。 问题答案: 从SimpleDateFormat javadocs : 月:如果图案字母的数目为3或更多,则将月份解释为文本;否则,将其解释为数字。 尝试使用“ MMM dd yyyy”之类
我在代码中收到“必须是数组类型,但它解析为字符串”错误。它还说i(在下面的代码中)不能解析为我没有得到的变量。 } 你们能帮我找出问题所在吗?我是Java编码的新手,所以我对这种格式还不完全满意。 非常感谢,朱奈德
我正在尝试将命令存储在队列中,并在以后从队列中读取它们。我使用这个队列是因为代码需要在Arduino上运行。当访问第一个(或任何)字符时,我得到一个分段错误。我在这里做错了什么? 谢谢你的帮助! PS:这招管用:
问题内容: 我正在尝试使用DB2运行一个简单的SQL语句,并且遇到了一些问题。我想在txt / db2文件中有一个脚本,并让引擎处理所有命令 这是脚本: 当我运行db2 -f / pathtofile时,我得到: 我究竟做错了什么?我的脚本有问题吗?另外,为什么没有“;”也能正常工作 我的陈述结尾处的终止符? 谢谢, 问题答案: 可能会有帮助, http://www.uc.edu/R/r25/do
问题内容: 有人知道什么是“不良状态线”吗? 编辑:我尝试了许多服务器,许多URL的,我仍然收到此错误? 问题答案: 从httplib(Python 2) 的文档(在Python 3中 称为http.client)中: 例外 :( 例外 :) 的子类。 在服务器响应我们不理解的HTTP状态代码时引发。 我运行了相同的代码,但未收到错误: 我想只是仔细检查所有内容,然后重试?
问题内容: 当我执行以下代码时,输出为“ nullHelloWorld”。Java如何处理null? 问题答案: 您正在尝试将值连接到。这由“字符串转换”控制,当一个操作数是a时发生,该转换被JLS的5.1.11节覆盖: 现在只需要考虑参考值: 如果引用为null,则将其转换为字符串“ null”(四个ASCII字符n,u,l,l)。