lugl4313820 发表于 2024-4-9 16:47

《Rust实战》初学trait和错误处理

<div class='showpostmsg'><p>【背景】</p>

<p>在数字的比较运算中,如果需要对两个不同的数进行比较时,编译器会报错的。例如程序如下:</p>

<p>&nbsp; 处理这种错误的误的方式有两种,一个是用as 另一种就是使用TryInto方法。这里讨论第二种处理的方法。</p>

<p>代码如下:</p>

<pre>
<code>use std::convert::TryInto;

fn main() {
    let a:i32 = 10;
    let b:u16 = 100;

    let b_ = b.try_into()
                .unwrap();
    if a&lt;b_{
      println!("a &lt; b!");
    }
}</code></pre>

<p>1、引入&nbsp;use std::convert::TryInto; 这个trait导入当前的局部作用域中。这个语句解锁了变量b的try_int()方法。&nbsp;</p>

<p>2、在let b_ = b.try_into().unwrap();中返回一个Result包装过的i32值。</p>

<p>文章中又提到了b如果转换失败,会导到程序崩溃,在后面会遇到。</p>

<p>除了转换u16,我试了转换u32、u64、u8、i8等其它的数量类型也是可以的。</p>

<p> &nbsp;</p>

<p>但是不能转换f32、f64的类型进行对比,在接着后面的内容里又介绍了浮点数的一些陷阱,后面再接着学习。</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

吾妻思萌 发表于 2024-4-11 18:01

类型至上

吾妻思萌 发表于 2024-4-11 18:02

似乎不用写u32吧,你装个rust-analysis智能补全

lugl4313820 发表于 2024-4-11 21:12

<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&amp;goto=findpost&amp;pid=3313874&amp;ptid=1276561" target="_blank"><font color="#999999">吾妻思萌 发表于 2024-4-11 18:02</font></a></font> 似乎不用写u32吧,你装个rust-analysis智能补全</blockquote>
</div>

<p>对的,是可以补全,好象他自动补i32,自己写一下也行。</p>

Mcu_MMU 发表于 2024-4-13 15:52

有图有代码,学习也非常认真,向版主大佬学习呀。

lugl4313820 发表于 2024-4-13 16:00

Mcu_MMU 发表于 2024-4-13 15:52
有图有代码,学习也非常认真,向版主大佬学习呀。

<p>感谢您的关注与赞赏,有点受之有愧呀。感谢感谢!</p>
页: [1]
查看完整版本: 《Rust实战》初学trait和错误处理