首页 > 其他分享 >rust学习 day1

rust学习 day1

时间:2024-07-05 12:20:17浏览次数:22  
标签:web actix gcd form u64 day1 学习 HttpResponse rust

边读rust程序设计这本书边写代码。
今天主要和cargo(换源,包提速),以及actix-web这个库(版本不兼容)鏖战。
清华的源也太慢了,换了中科大的才搞定。
书里的actix-web版本太落后了,编译通过不了,换了actix-web 4.0然后参考官方指南:https://actix.rs/docs/getting-started/,才编译成功。

use actix_web::{web, App, HttpResponse, HttpServer};
use serde::Deserialize;


#[actix_web::main]
async fn main() {

    println!("Serving on http://127.0.0.1:3000");

    HttpServer::new(|| {
        App::new()
            .route("/", web::get().to(get_index))
            .route("/gcd", web::post().to(post_gcd))
    })
        .bind(("127.0.0.1", 3000)).expect("bind error!!")
        .run()
        .await.expect("run error!!");
}

async fn get_index() -> HttpResponse {
    HttpResponse::Ok()
        .content_type("text/html")
        .body(
            r#"
                <title>GCD Calculator2.0</title>
                <form action="/gcd" method="post">
                    <input type="text" name="n"/>
                    <input type="text" name="m"/>
                    <button type="submit">Compute GCD</button>
                </form>
            "#,
        )
}

#[derive(Deserialize)]
struct GcdParameters {
    n: u64,
    m: u64,
}

async fn post_gcd(form: web::Form<GcdParameters>) -> HttpResponse {
    if form.n==0 || form.m == 0 {
        return HttpResponse::BadRequest()
            .content_type("text/html")
            .body("do not input 0!");
    }

    let response =
        format!("the gcd of {} and {} is <b>{}</b>",
                form.n, form.m, gcd(form.n, form.m));

    return HttpResponse::Ok()
        .content_type("text/html")
        .body(response);
}

#[test]
fn test_gcd() {
    assert_eq!(gcd(14, 15), 1);
    assert_eq!(gcd(2*3*5*11*17, 3*7*11*13*19), 3*11);
}

fn gcd(mut n:u64, mut m:u64) -> u64 {
    assert!(n != 0 && m != 0);
    while m != 0 {
        if m < n {
            let t = m;
            m = n;
            n = t;
        }
        m = m % n;
    }
    return n;
}

标签:web,actix,gcd,form,u64,day1,学习,HttpResponse,rust
From: https://www.cnblogs.com/Ausn/p/18285568

相关文章

  • rust学习 day2
    搞了搞基本的并发。照着书上写了个曼德博绘图器。写起来真麻烦,里三层外三层。useactix_web::{web,App,HttpResponse,HttpServer};useserde::Deserialize;#[actix_web::main]asyncfnmain(){println!("Servingonhttp://127.0.0.1:3000");HttpServer::n......
  • python学习之字符串
    (一)表示方式:一对单影号或一对双影号:常用于单行字符串一对三影号(可双可单):常用于多行字符串,不用于给变量赋值时可作多行注释用字符串不可变,不能像列表一样修改其中某个元素,任何对是字符串的修改实际就是生成了一份新数据。(二)转义符\反斜杠(也是windows中路径分隔符,unix中路径分......
  • python学习之字符编码
    字符分类及历史ASCII0-255从数字到小写大写英文字母,加上一些特殊符号,常用的低字节(0-127)也是基本表,非常用的高字节(128-255)也是扩展表,8位为1字节,ASCII中每一个字符占一个字节GB2312中国1980年,为中文在计算机应用而制定的编码系统,一个字符占两个字节,中英文环境下兼容ASCII码,以连......
  • django学习入门系列之第四点《案例 博客案例》
    文章目录container面板案例博客案例往期回顾container堆叠到两边<divclass="container-fluidclearfix"><divclass="col-sm-9">1</div><divclass="col-sm-3">2</div></div>放在中间<divclass="c......
  • 关于那些想要转行AI的人:送你一份人工智能入门指南以及学习路线资料
    **人工智能是什么?人工智能为何重要?我们应该畏惧人工智能吗?**为什么突然之间所有人都在谈论人工智能?你可能会从网上知道人工智能如何为亚马逊和Google的虚拟助理提供支持,或者人工智能如何一步步地取代所有的工作(有争议的),但是这些文章极少很好的解释人工智能是什么(或者机器人......
  • 2024 年第十四届 APMCM 亚太地区大学生数学建模A题 飞行器外形的优化问题--完整思路代
    飞行器是在大气层内或大气层外空间飞行的器。飞行器可以分为:航空器航天器、火箭和导弹。在大气层内飞行的称为航空器,如气球、飞艇、飞机等。它们靠空气的静浮力或空气相对运动产生的空气动力升空飞行。在太空飞行的称为航天器,如人造地球卫星、载人飞船、空间探测器、航天飞机......
  • 暑假集训学习笔记(4):lxl DS Day 4
    倍增值域分块CF702FT-Shirts考虑将\(q_i\)从大到小排序,将\(a_i\)从小到大排序,并维护一个\(b_i\)数组表示答案,我们遍历\(q_j\)数组,每次是将\(a_i\)数组中\(a_i\geqc_j\)的全部减\(c_i\),然后\(b_i\)加1。考虑用平衡树维护\(a_i\),split一下,右区间树......
  • 第13篇:深度学习中的情感分析与情感生成
    情感分析与情感生成是自然语言处理(NLP)中的重要任务。情感分析通过识别文本中的情感,帮助我们理解用户的情绪状态。情感生成则通过生成带有特定情感的文本,提升人机交互的自然性和人性化。本文将深入讲解情感分析的基本方法及如何实现情感生成,并通过具体的Python代码示例展示实......
  • 【机器学习】连续字段的特征变换
    介绍 除了离散变量的重编码外,有的时候我们也需要对连续变量进行转化,以提升模型表现或模型训练效率。在之前的内容中我们曾介绍了关于连续变量标准化和归一化的相关内容,对连续变量而言,标准化可以消除量纲影响并且加快梯度下降的迭代效率,而归一化则能够对每条数据进行进行范数......
  • 算法学习笔记(24):卡常小技巧
    卡常学习来源->https://platelet.top/hpc/oldst表访问连续性就不说了,考虑计算log2。预处理比31^builtin__clz(x)慢,而且慢很多。setinsert(pos,x)如果\(pos\)是\(x\)在set中正确的位置,那么insert是\(O(1)\)的。erase(it)是\(O(1)\)的。prev(it)......