【rust】rust基础代码案例

news/2024/11/5 12:40:10 标签: rust, wasm

文章目录

  • 代码篇
    • HelloWorld
    • 斐波那契数列
    • 计算表达式(加减乘除)
    • web接口
  • 优化篇
    • target/目录占用一个g,仅仅一个actix的helloWorld demo
    • 升级rust版本, 通过rustup
    • cargo换源

代码篇

HelloWorld

rust">fn main() {
    print!("Hello,Wolrd")
}

斐波那契数列

rust">fn fib(n: u64) -> u64 {
    let mut a = 0;
    let mut b = 1;
    for _ in 0..n {
        let c = a + b;
        a = b;
        b = c;
    }
    a
}

fn main() {
    let n = 10;
    let result_list: Vec<String> = (1..n+1).map(|i| fib(i).to_string()).collect();
    let result = result_list.join(",");
    println!("{}", result);
}

计算表达式(加减乘除)

rust">use std::io;
use std::num::ParseIntError;
fn parse_expression(expression: &str) -> Result<i32, ParseIntError> {
    let mut result = 0;
    let mut current_number = 0;
    let mut operator = '+';

    for token in expression.split_whitespace() {
        match token {
            "+" => operator = '+',
            "-" => operator = '-',
            "*" => operator = '*',
            "/" => operator = '/',
            _ => {
                current_number = match token.parse::<i32>() {
                    Ok(num) => num,
                    Err(e) => return Err(e),
                };
                match operator {
                    '+' => result += current_number,
                    '-' => result -= current_number,
                    '*' => result *= current_number,
                    '/' => result /= current_number,
                    _ => {},
                }
            }
        }
    }

    Ok(result)
}
fn main() {
    println!("请输入表达式(例如:1 + 2 * 3):");
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("读取输入失败");
    let expression = input.trim();
    match parse_expression(expression) {
        Ok(result) => println!("计算结果为:{}", result),
        Err(e) => println!("解析表达式时出错:{}", e),
    }
}

web接口

rust">use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder};

#[get("/")]
async fn hello() -> impl Responder {
    HttpResponse::Ok().body("Hello world!")
}

#[post("/echo")]
async fn echo(req_body: String) -> impl Responder {
    HttpResponse::Ok().body(req_body)
}

async fn manual_hello() -> impl Responder {
    HttpResponse::Ok().body("Hey there!")
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new()
            .service(hello)
            .service(echo)
            .route("/hey", web::get().to(manual_hello))
    })
    .bind(("127.0.0.1", 8080))?
    .run()
    .await
}

优化篇

target/目录占用一个g,仅仅一个actix的helloWorld demo

~/.cargo/config写入, 放到项目之外去,眼不见心不烦

[build]
target-dir = "/path/rust-target"

在这里插入图片描述
不过一个demo 接口, 你执行下cargo run 和 cargo build --release, 就占用1.2g。 这可真烧磁盘。。

rust_rustup_118">升级rust版本, 通过rustup

export RUSTUP_DIST_SERVER="https://rsproxy.cn"
export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"
rustup update

cargo换源

~/.cargo/config写入

[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index/"

http://www.niftyadmin.cn/n/5739476.html

相关文章

Python中如何计算整商:详解整除运算及其应用场景

目录 一、整除运算的基本概念 1. 语法 2. 工作原理 二、整除运算的详细解析 1. 整数之间的整除 2. 浮点数之间的整除 3. 整数与浮点数之间的整除 三、整除运算的应用场景 1. 数据处理中的取整操作 2. 循环中的步进控制 3. 分页显示数据 4. 时间计算中的取整 四、整…

鸿蒙HarmonyOS开发:给应用添加基础类型通知和进度条类型通知(API 12)

文章目录 一、通知介绍1、通知表现形式2、通知结构3、请求通知授权 二、创建通知1、发布基础类型通知2、发布进度类型通知3、更新通知4、移除通知 三、设置通知通道1、通知通道类型 四、创建通知组五、为通知添加行为意图1、导入模块。2、创建WantAgentInfo信息。4、创建WantAg…

HTTP、WebSocket、gRPC 或 WebRTC:各种协议的区别

在为您的应用程序选择通信协议时&#xff0c;有很多不同的选择。 本文将了解四种流行的解决方案&#xff1a;HTTP、WebSocket、gRPC 和 WebRTC。 我们将通过深入学习其背后原理、最佳用途及其优缺点来探索每个协议。 通信方式在不断改进&#xff1a;变得更快、更方便、更可靠&…

Source Insight 4.0常用操作

解决中文乱码问题 options->preferences_>file->

git clone,用https还是ssh

前言 在使用Git去克隆项目时&#xff0c;会遇到https和ssh等形式&#xff0c;这两种又有何种区别呢&#xff0c;本文将重点讨论在具体使用中的问题。 注:第一次使用Git 时&#xff0c;需要先设置全局用户名和邮箱&#xff0c;否则后续使用命令时会报错&#xff0c;也是提醒先添…

前端Nginx的安装与应用

目录 一、前端跨域方式 1.1、CORS(跨域资源共享) 1.2、JSONP(已过时) 1.3、WebSocket 1.4、PostMessage 1.5、Nginx 二、安装 三、应用 四、命令 4.1、基本操作命令 4.2、nginx.conf介绍 4.2.1、location模块 4.2.2、反向代理配置 4.2.3、负载均衡模块 4.2.4、通…

关于金属氢化物(储氢)PCT曲线拟合、ZBS有效导热系数模型、JMAK类型吸放氢动力学方程的笔记

参考文献&#xff1a;Experimental and numerical study of metal hydride beds with Ti0.92Zr0.10Cr1.0Mn0.6Fe0.4 alloy for hydrogen compressionhttps://www.sciencedirect.com/science/article/pii/S1385894723043851?via%3Dihub#s0010 一、PCT曲线拟合 根据以下文献内容…

Go 函数的使用

在Go语言中&#xff0c;函数是一等公民&#xff0c;可以用于代码复用、抽象逻辑、分解复杂任务。函数的定义和使用在Go中非常灵活&#xff0c;包括支持多返回值、匿名函数、闭包和递归等。下面是Go语言中函数的常用用法和示例。 1. 基本函数定义和调用 在Go中&#xff0c;函数…