zoukankan      html  css  js  c++  java
  • Rust: 入门实践

    最早听说 Rust 这门编程语言是在一年前。当时,Node 创始人 Ryan Dahl 宣布建立一个 Deno 的项目,底层基于 Go 语言来实现,上层基于 V8 实现一个 TypeScript 的 Runtime,感觉挺有意思的,不时地还关注一下。

    因为很早就看过 Ryan 对比 Go 和 Node 的文章,知道他写 Go 有一段时间了,所以 Deno 基于 Go 语言实现,一点也不奇怪,并且觉得非常合适。但过了一段时间之后再去 Github 看,发现 Deno 的底层被换做 Rust 实现了,当时还有点奇怪,为啥要更换呢,Rust 又是啥玩意,语法这么奇怪。再后来,就没继续关注了。

    到了今年早些时间,Facebook 发布了 Libra 区块链产品,也是基于 Rust 实现的,看来 Rust 还真不一般,这么大的项目都采用了。又过了一段时间,微软也在打算使用 Rust 替换项目中的 C++,又跑去看了相关的分析,最后觉得,是时候了解一下这门新的编程语言了。

    Rust 是一门系统语言,最初是由 Mozilla 研究院的 Graydon Hoare 设计创造,然后在 Dave Herman, Brendan Eich 等人的贡献下逐步完善。值得一提的是,Brendan Eich 正是 JavaScript 语言的缔造者。

    Rust 是一门内存安全的语言,不允许空指针、悬垂指针和数据竞争情况,它没有垃圾回收机制,却实现了内存的自动管理,性能堪比C/C++,支持 函数式命令式 以及 泛型 等多种编程范式,对并发也有很好的支持。这么多优点,想想就让人激动。

    学习一门新的语言,首先要去参考它的官方文档。我们可以看看 Rust 的官方文档:https://www.rust-lang.org,大部分知识都可以这里 GET 到。为了方便大家更快地入门,下面就梳理一个简单的 Rust 入门教程。

    一、在线安装:

    Rust 提供了一个叫 Rustup 的工具,来负责 在线安装 以及 版本管理,在 macOS、Linux 等类 Unix 系统中,我们可以直接在命令行执行下面这条命令,使用 Rustup 工具进行在线安装:

    $ curl https://sh.rustup.rs -sSf | sh
    

    安装完之后,我们打开一个命令行窗口,执行 rustc 命令来看看是否安装成功:

    $ rustc --version
    

    对于其他平台的安装,可以参考官方文档指导页:https://forge.rust-lang.org/infra/other-installation-methods.html

    如果安装或编译过程中出现问题,先不要气馁,我们也可以直接点击下面这个链接,使用在线编译运行环境来学习,这对初学者非常友好:

    https://play.rust-lang.org

    二、写个HelloWorld

    Rust 源代码以 .rs 为后缀名,接下来,我们就创建一个 main.rs 的文件:

    // main.rs
    
    fn main() {
        println!("Hello World!");
    }
    

    如上面代码所示,main 函数非常简洁。我们在命令行中执行 rustc 进行编译:

    $ rustc main.rs
    

    命令运行结束后,当前目录下会生成一个 main 的可执行文件(Windows平台是 main.exe),我们可以直接运行 ./main 来执行这个文件。

    上面代码中,println! 是一个很奇怪的用法,它不是一个函数调用,而是 Rust 中的宏语句,用于格式化输出。

    输出结果时可以定义不同的格式,如下面代码所示:

    // main.rs
    
    fn main() {
        // 空的占位符
        println!("{} {}", "Hello", "World");
    
        // 数字占位符
        println!("{0} {1}", "Hello", "World");
    
        // 变量占位符
        println!("{first} {second}", first = "Hello", second = "World");
    
        // debug模式 显示更详细的信息
        println!("{:?}", "Hello World");
    
        // 指针模式(pointer)
        println!("{:p}", &"Hello World");
    
        // 显示二进制格式(binary)
        println!("{:b}", 26);
        // 显示十六进制小写格式(hex)
        println!("{:x}", 26);
        // 显示十六进制大写格式(HEX)
        println!("{:X}", 26);
    }
    

    运行以上代码,控制台打印结果如下:

    Hello World
    Hello World
    Hello World
    "Hello World"
    0x10ab5d310
    11010
    1a
    1A
    

    今天就先写到这里,感兴趣的同学可以试一把。

  • 相关阅读:
    2018-2019-2 20175120 实验四《Android程序设计》实验报告
    mini dc(选做)
    20175120彭宇辰 《Java程序设计》第十一周学习总结
    20175120彭宇辰 《Java程序设计》第十周学习总结
    实验三 《敏捷开发与XP实践》实验报告
    20175120彭宇辰 《Java程序设计》第九周学习总结
    20175120彭宇辰 《Java程序设计》第八周学习总结
    20175120彭宇辰-结对编程-四则运算(二)
    实验二《面向对象程序设计》实验报告
    20175120彭宇辰 《Java程序设计》第七周学习总结
  • 原文地址:https://www.cnblogs.com/liuhe688/p/13416065.html
Copyright © 2011-2022 走看看