• 全栈程序员的新玩具Rust(三)板条箱


    Image result for crate 图片"

    上次用到了stdout,这次我们来写一个更复杂一点的游戏

    rust的标准库叫做std,默认就会引入。

    这次我们要用到一个随机数函数,而随机数比较尴尬的一点是这玩意不在标准库中,我们要额外依赖一个库。

    很多编程方案都有自己的模块化库系统,rust也不例外,不过rust 把库叫做crate,就是图中这种箱子的意思,倒也形象。

    image

    rust提供了一个官方网站 crates.io用来管理库,你也可以把你的库提交上去

    我们这次就要使用这个rand库

    安装依赖库

    image

    因为查询到当前rand库的版本已经到了 0.7.2

    那我们定义一个 0.7.0 的依赖好了。

    编辑cargo.toml文件,加上依赖就好了

    写入0.7.0,实际上会自己查找最新的 0.7.x 版本的rand

    安装依赖库只需要编辑 cargo.toml文件即可,然后build 时 rust就会自己去下载库

    然后 rust 最有趣的部分来了

    查看文档

    只需要在命令行输入 cargo doc –open

    rust就会自动为你生成一份本地代码文档,当然也包括依赖库的

    image

    通过本地文档,我们大概知道了rand怎么用

    image

    然后写代码,用这个库,和文档有点出入哈,不过还是顺利的输出了一个随机数字

    猜数字

    猜数字游戏就是让玩家不停的输入数字,只告诉他你猜大了,猜小了,直到玩家猜对

    我们知道怎么输出,能产生随机数,还差输入

    image

    由于vscode 集成的console 不接受输入,我们要调试输入,第一件事是打开外部控制台

    image

    写个死循环,不停的stdin().read_line

    完成的版本在这里

    https://gitee.com/lightsever/rust_study/blob/master/hello02/src/main.rs

    image

    出现的新代码就只有这部分

    u32::from_str是 从string 转为 u32的方法

    但是他返回的类型是result

    这里我们用rust的特色语法match 来处理他

    之前的.expect(“”)可以快速的处理这种情况。

    这里也是为了解Rust的错误处理机制,试验了各种写法

    image

    因为我们要用这个返回值做分支处理,之前的.expect(“”)方法就不够用了。

  • 相关阅读:
    接口隔离原则(Interface Segregation Principle)ISP
    依赖倒置(Dependence Inversion Principle)DIP
    里氏替换原则(Liskov Substitution Principle) LSP
    单一指责原则(Single Responsibility Principle) SRP
    《面向对象葵花宝典》阅读笔记
    智能手表ticwatch穿戴体验
    我所理解的软件工程
    RBAC基于角色的权限访问控制
    程序员健康指南阅读笔记
    我晕倒在厕所了
  • 原文地址:https://www.cnblogs.com/crazylights/p/12115709.html
Copyright © 2020-2023  润新知