【小沐学Web】Rust实现Web服务器

在这里插入图片描述

1、简介

https://www.rust-lang.org/

Rust: 一种使每个人都能够构建可靠且高效的软件的语言。
如今,全球有数百家公司在生产环境中使用 Rust,以提供快速、资源少、跨平台的解决方案。您熟悉和喜爱的软件,例如Firefox、 Dropbox和Cloudflare,都使用 Rust。从初创公司到大公司,从嵌入式设备到可扩展的 Web 服务,Rust 都非常适合。

  • 高性能
    Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。

  • 可靠性
    Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全——使您能够在编译时消除许多类别的错误。

  • 生产率
    Rust 有很棒的文档、一个带有有用错误消息的友好编译器和一流的工具——一个集成的包管理器和构建工具、具有自动完成和类型检查的智能多编辑器支持、一个自动格式化程序等等。

在这里插入图片描述

2、开发环境配置

2.1 下载

https://www.rust-lang.org/tools/install
下载安装程序 rustup-init.exe,直接运行即可完成安装。
在这里插入图片描述

2.2 安装

运行 rustup-init.exe,如下下图所示:
在这里插入图片描述

2.3 编辑工具

Rust 支持很多的集成开发环境(IDE)或开发专用的文本编辑器。
无论您喜欢用命令行还是可视化编辑器,都有适合的 Rust 集成供您选择。 您也可以使用 Rust DO_NOT_SUBMIT来为自己的编辑器添加 Rust 支持。
在这里插入图片描述

2.4 构建工具

Cargo 是 Rust 的构建工具,它将常用命令集于一身,无需引入其它命令。

  • (1)安装
    crates.io 上拥有成千上万的软件包,您想要的解决方案在这里几乎都能找到。 站在巨人的肩膀上,您的团队可远离重复,专注创新。
  • (2)测试
    Rust 出色的测试工具能让您对代码放心。cargo test 是 Rust 统一的测试方案。测试代码既可写在功能代码之后,也可放在独立文件中,它满足您所有的测试需求。
  • (3)部署
    cargo build 可为不同平台构建精益的可执行文件。仅需一行命令,您的代码就能针对 Windows、Linux、macOS 和 Web 进行编译。支持全部现代平台接口,无需定制构建文件。

2.5 自动化工具

利用自动化加速开发

  • (1)Rustfmt
    Rustfmt 用于自动格式化 Rust 代码,使代码更加容易阅读、编写和维护。最重要的一点是:您再也不必为空格或大括号位置而争论了。
  • (2)Clippy
    “您似乎正在编写一个迭代器。”
    Clippy 能够帮助所有不同经验水平的开发者编写出符合惯例的代码及推行标准写法。
  • (3)Cargo Doc
    Cargo 文档构建器让所有 API 都有文档。 您可以通过 cargo doc 在本地生成文档, 还可以通过 docs.rs 在线获取公开的 crate 文档。

3、Hello World

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

4、TCP/UDP通信

5、Web服务器

  • Cargo.toml
[package]
name = "testweb"
version = "0.1.0"
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
iron = "0.5.1"
mime = "0.2.3"
router = "0.5.1"
urlencoded = "0.5.0"

  • main.rs
extern crate iron;
#[macro_use] extern crate mime;

use iron::prelude::*;
use iron::status;
//use iron::Response;

fn main() {
    
    
    println!("Serving on http://0.0.0.0:8080...");
    Iron::new(get_form).http("0.0.0.0:8080").unwrap();
}

fn get_form(_request: &mut Request) -> IronResult<Response> {
    
    
    let mut response = Response::new();

    response.set_mut(status::Ok);
    response.set_mut(mime!(Text/Html; Charset=Utf8));
    response.set_mut(r#"
<html>
	<body>
		Hello!
	</body>
</html>
        "#);

    Ok(response)
}

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/hhy321/article/details/123311685