Rust - hello world

介绍

用rust语言你可以创建可信赖的高效系统组别软件.开发者可以使用rust做网络开发,像web服务器,邮件服务器.rust也可以用在编译器和解析器,可视化和软件容器,数据库,操作系统和密码学.你可以使用rust来构建游戏,命令行程序,web-assembly, 嵌入式应用开发.

Rust是安全的,可替代现存的系统开发语言像C,C++. 像C和C++, 相比现在开发语言Rust没有运行时和垃圾回收器. 和C和c++不一样的是,rust内存操作是安全的.rust阻止很多和内存有关系像C或c++中的bug.

Rust在性能,安全和实现表达中取得了独特的平衡. 无论你是什么编程背景,你会喜欢rust提供一些东西.

有什么方式学习rust最方好

在你在生产上使用rust之前,需要一点理论知识. 在开始开发之前,确定和本课程一起学习或学习其它资源,.在你获得rust基本概念之后,尽可能的多练习. 可以跟随本模块或其它学习路径练习.

我们先学习rust中小的,基本概念.然后在这些基本概念上构建练习和探索.跟随这种方式创建项目,最后你会牢牢掌握这们语言.

学习目标

  • 这个部分中,你会学到
  • 一些rust特性
  • 为什么开发者选择rust而没选其它语言
  • 一些基本的组件和工具来构建,编译,和运行rust程序
  • 在rust playgroud中做测试

什么是Rust

Rust是开源,系统编程语言,你可以用来开发高效,安全软件.用rust你可以管理内存,控制系统其它的底层. 并且你可以用更高抽象概念,像迭代器和接口. 这些特性仿形控制器 rust和其它低级语言区分开,像C和C++.

Rust也提供了如下优势,这也使它应用到更广范应用.

类型安全:编译器保证没有操作被应用在错误的变量类型上.

内存安全:rust指针(引用)总是指定可用内存.

数据竞争可以自由运用:rust借用检测器来保证线程安全,是通过保证多个地方程序不能改变相同的值在相同时间.

零成本抽象:rust允许使用高级概念,像迭代,接口和函数式编程用,而几乎没有性能开销. 抽象功能也好像你手写了底层代码.

最小运行时:Rust有个非常小和可选的运行时环境.rust也没有垃圾回收器来高效管理内存.因为这样rust几乎非常像C和C++.

目标是bare metal:rust可以嵌入开发,并且"bare metal"编程,使用它非常适合写操作系统内核或设备驱动.

Rust独有的特性

为评估开发语言是否适合你的项目,需要知道语言的特性与限制.然后对比不同可行的语言,选择运行最好的那个.

在这个单元可以复习一些特性和rust语言的一些限制

  • Rust模块系统:模块,箱和路径
  • Rust标准库和第三方箱
  • Rust Cargo工具和依赖管理
  • 什么时候用rust

用rust模块系统管理你的代码

Rust提供非常多的特性来帮助你管理和组织你的代码. 这些特性被称为"Rust模块系统".系统组成由包含Crates,modules和paths和可以和他们一起工作的工具.

  • Crates:Rust Crates是一个编译单元,它是Rust编译器可运行的最小部分. 在crate中代码被编译在一起来创建二进制可执行程序或功能库. 在rust中只有crates可以被编译成可重复使用单元.库包含rust模块层级用隐式和最顶层无名的.
  • Modules:rust模块可以帮你组织管理你的程序,通过让你管理独立代码在create中的作用域.相关的代码与被组合一起的代码可以放到同一个模块.递归代码可以跨越其它模块.
  • Paths:在Rust中你的代码中可以用path来命名所用项.例如一个path可以被数据定义像vector,代码函数,或是一个module.module的特性可以帮助你控制你私有paths.你可以指定代码中一部分是共用的相对私有部分.这样可以实现隐藏了细节.

使用Rust cate和库

在Rust程序中Rust标准库std包含可重复使用代码作为基础定义或操作.这些功能库已经定义了一些核心数据类型,像String和Vec,及Rust基础类型,通用的宏函数,支持输入输出操作,和很多其它方面的功能.

有成千上万个功能库和可用的第三方crates被用在rust程序,大部分通过第三方crate库crates.io来访问.等下可以学习在你的程序中怎样访问这些crates.现在一些create可以被用来练习.

std:rust标准库.在rust练习中,你会注意到以下模块
        std::collections - 定义集合类型,像HashMap
        std::env - 获得工作环境
        std::fmt - 控制你输出格式功能
        std::fs - 操作文件系统功能
        std::io - 输入输出功能
        std::path - 定义运行系统文件目录

structopt:从命令行中容易转换第3方的crate

chrono:操作日期或时间的第三方crate

regex:正则表达式的第三方crate

serde:rust数据结构序列化与把序列化的第三方crate

默认,std库可以被所有rust crate用.为了复用使用在crate或库中代码,我位实现用use关键字.用use关键字,在crate或库中代码 被代入作用范围内,这样你可以访问定义和函数在你的程序中.标准类库可以用use声明来访问.用use path,可以用use std::fmt. 其它的crates或类库可以被访问用他们的名字,像use regex::Regex.

用Cargo来创建和管理项目

虽然使用rustc直接可以构建crate,大多数项目使用构建和管理工具--Cargo.

Cargo可以为你做很多事情,包括:

  • cargo new命令创建新的项目模板
  • cargo build来构建项目
  • 用cargo test来测试项目
  • 用cargo check来检查项目
  • 用cargo dock来为项目构建文档
  • 用cargo publish来发送库到crates.io
  • 项目中增加依赖crate,通过在Crago.toml添加

什么时候用rust

Rust有很多优势,当被考虑作为你项目的语言:

rust允许控制程序或类库的性能和资源的消耗,与C和C++相当, 并且默认是内存安全的,消灭了整个类的常见错误.

Rust丰富了抽象特性,允许开发者编码程序中非常多不变量为代码,通过编译器来检测替代约定或是文档.这些特性可以导致感觉"编译通过了,他可以工作了"

Rust构建工具来编译,测试,生成文档和分享代码,也可以丰富生态系统的工具或是库.这些工具可以作一些一些语言操作难的任务,像构建依赖,非常容易并且很有生产在rust中.

Rush练习厂

有时你只是想要试一小块rust代码或者检查在rust 库中定义的语法.你也可能找一种可以快速分享代码给其它人的方法.rust语言提供并支持这些任务在Rust练习厂.

练习厂是rust开发的IDE,可以直接在网上用Rust Playground.任何人都可以访问.可以写代码,编译代码并且运行代码在相同的环境.下边截屏展示练习厂环境.在工具栏的最右侧,配置菜单可以设置你的环境.

Rust - hello world_第1张图片

在练习厂,你可以访问在std 标准库中方法或函数 .从crate.io库下载前100和他们的依赖也是直接可用的.

工具和特性

Rust练习厂有几种不同的构建工具和开发特点:

  • 格式化代码:Rustfmt工具格式化代码为官方格式.工具调整代码并且应用推荐的缩排和空格在元素和操作符间.
  • 测试代码:Clippy工具检查代码中错误.它可以运行lint测试在代码上,来找到错误和可以提高的地方
  • 保存代码你在Rust练习厂操作,你的代码通过浏览器自动保存在本地.这个特性可以非常容易恢复到你最近的操作,尤其是你关闭浏览器.
  • 分享代码:分享特性创建了可以在你的练习厂可分享到Github.你可以保存这个URL稍后来访问你的代码.这个URL加载你指定的依据到你的练习厂.

构建选项

在练习厂有一些构建和运行的选项

  • Run:构建并且运行代码,展示输出.这个Run和cargo run一样
  • Build:构建你的代码,但不运行.和cargo build一样
  • Test:构建代码,并且运行所有代码中的测试.和cargo test一样

保护限制

在练习厂有一些限制,保护网站被用来恶意操作.这些限制帮助确保网站被所有人使用.

  • 网络:当你编译和运行代码时,网络连接是不能用的.
  • 内存:在编译和运行构建程序时内存的大小是被限制的.
  • 执行时间:设置一个最大的编译代码和运行构建代码的时间
  • 磁盘:占用大量磁盘空间的代码在编译和运行是被限制的

了解更多特性可以访问 Rust website

总结

在章中,你了解到了用rust来构建应用的类型. rust对于低级或是高级类型开发都非常有用.

你检查rust命令来处理你的代码,rustc被用来写和编译rust程序的

发现rust cargo特性并且学习系统module来组织你的代码.可以使用cargo来创建,构建和运行项目.

可以看下rust练习厂来学习怎么写和构建测试,运行代码.

试试Rust cookbook中内容

Rust Cookbook包含一些代码,允许跟随推荐练习作为平常的任务.通过不断练习,你可以学习怎样使用常用crates.内容包含的很广的主题,包含处理文本,数字,操作数据库,应用算法,调试程序.你也可以阅读在 Rust website

参考

  • Rust std standard library
  • Rust crates.io library repository
  • Rust cookbook recipes
  • Rust playground help
  • Stack overflow developer survey of 2021

你可能感兴趣的:(lang,rust,开发语言,后端)