自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 【rust实战】rust博客系统4_连接数据库及查询数据

当使用get检索数据时,如果键值存在,返回Some(T), 如果键值不存在,返回None,会引发一个带有指定消息(这里时REASON)的panic错误。mysql::Result: T被替换成了(), 即单元类型,表示这个函数不返回值。Result没有指定这两个参数时,通常是在泛型上下文中,具体类型在其他地方被指定了。:如果get_conn返回的Err变体,则?为什么不用::而用. .调用对象的方法 ::访问关联函数或者静态方法。,它可以有两个值,一个是Some(T) 一个是None,

2024-11-02 06:48:46 676

原创 【rust实战】rust博客系统3_项目目录结构及文件目录引入

main.rs --main中引用sub_module.rs的内容 my_module.sub_module::say_hello()在main中直接写 mod my_module 也可以引入sub_module.rs的内容。2.从某个版本开始,可以不在目录下创建mod.rs,也能引入该目录下的.rs文件。3.main中使用 my_module.rs中的方法。1.mod声明了项目中的模块结构,告诉编译器哪里可以找到这些。mod.rs --内容为。main.rs --主文件。

2024-10-29 11:28:35 613

原创 【rust实战】rust博客系统2_使用wrap启动rust项目服务

map(|| "hello,warp") 对前面的过滤结果进行map操作,map方法接收一个闭包,该闭包在匹配导路径时执行,并返回一个值。||"hello,warp" 无参数闭包,返回字符串 hello warp。运行rust项目,然后浏览器输入 127.0.0.1:8080 可以看到输出内容。warp::path::end() 用于匹配根路径 /在[dependencies]中添加。3.在src的main中 写启动服务器的代码。如何创建一个使用warp框架的rust项目。2.添加warp依赖。

2024-10-22 15:43:37 547

原创 【rust实战】rust博客系统1_rust后端框架选择

1.成熟稳定,提供了完整的web服务器解决方案,包括路由,中间件 websocket等。2.模块化设计 可以灵活组合不同的过滤器来构建路由 处理逻辑。("Hello,{}!",name)): 闭包。因为这次做的是一个博客系统,所以我们暂时采用warp作为后端开发框架。3.基于 tokio 异步运行时,提供了强大的异步编程能力。3.提供了大量的中间件和插件,可以方便集成各种问题。5.适用场景:需要处理高并发的项目。warp = "0.3" # warp版本。4.学习曲线相对陡峭。

2024-10-10 21:34:37 523

原创 【rust学习】rust基础知识清单详情(全)

unwrap() 方法会检查 Result,如果是 Ok,它会返回里面的值(在这个例子中是锁住的计数器),如果是 Err,程序将会 panic(即异常终止).map(|url| tokio::spawn(download_data(url))) //map方法遍历urls,每个url调用tokio::spawn启动一个新的异步任务。fn call_fn(f: F) where F: Fn() { //:泛型参数的声明 where F:Fn() F必须实现Fn() trait。

2024-09-30 11:11:36 1332

原创 rust学习_rust基础知识

rust基础学完了,对照表格复习下基础知识点吧。如何使用 tokio::spawn 启动新的异步任务。如何使用 tokio::join!UnsafeCell是什么 如何使用。如何更新hashMap中已经存在的元素。RefCell是什么 如何使用。如何使用结构体更新语法创建新的实例。如何使用map和filter创建。如何访问hashMap中的元素。Cell是什么 如何使用。闭包如何使用闭包外的环境变量。Box是什么 如何使用。Arc是什么 如何使用。

2024-09-27 14:04:26 437

原创 rust学习_rust安装 运行 以及cargo解释

1.执行build的时候,可以带参数 cargon build --release。1.执行 cargon run会先自动执行 cargon build。2.为什么 cargon run可以 build,还要先 build。3.通过 cargo test 命令来运行项目的单元测试。2.通过 cargo new命令快速创建项目。1.通过cargo.toml 文件管理依赖项。1.项目管理:通过cargo 构建 运行 测试项目。1.cargon build:编译。2.cargon run 运行。

2024-09-26 11:01:59 645

原创 rust学习_基础语法_数据类型_注释

3.可变字符串 let string: String = String::from("world") //可变字符串。1.定义元组 let tuple_example = (10, "hello", 3.14)2.字符串切片 let s: &str = "hello" //字符串切片。1.单个字符 let c:char = 'a' //单个字符。1.println!3.定义可变数组 let mut a = [1,2,3]1.定义数组 let a =[1,2,3,4,5]

2024-09-26 10:59:51 344

原创 rust学习_函数

1.函数中可以使用 if loop for while等循环。x + y // 这里没有分号,所以这是返回值。//最后一个表达式通常是返回值(如果。1.表达式是计算某个值的代码片段。3.函数可以有返回值 也可以不返回值。2.表达式不以分号(;3.如 x+1 就是表达式。z + 10 // 这里是返回值。2.函数可以有参数 也可以没有。

2024-09-25 09:19:21 280

原创 rust学习_条件语句和循环

if <condition> {block 1} else { block 2 } block1和block2是函数体表达式。:用于处理模式匹配,它允许你将一个特定的模式与一个值进行比较,如果匹配,则执行对应的代码块。2.loop {} 会一直执行 直到遇到break。("值为:{}",i)if number {} 会报错。rust中条件表达式必须是bool类型。//通过下标访问数组。

2024-09-24 16:21:12 162

原创 rust学习_迭代器

/ println!// 下面的代码会导致编译错误,因为 `vec` 已经被 `into_iter` 消耗了。//fold:将迭代器中的元素累积成一个单一的值。// 链式调用:筛选出偶数,然后对每个元素乘以 2,最后收集到一个 Vec 中。2.创建可变借用迭代器(允许在遍历过程中修改集合元素 )// 创建一个迭代器,对每个元素乘以 2。// 创建一个迭代器,筛选出偶数。// 使用 fold 计算总和。:将迭代器中的元素收集到一个集合中。3.迭代器的链式调用。

2024-09-24 09:31:48 382

原创 rust学习_闭包

fn call_fn(f: F) where F: Fn() { //:泛型参数的声明 where F:Fn() F必须实现Fn() trait。这些变量的所有权会被移动到闭包中,因此在闭包外部不能再使用这些变量。("{}",s ) //这行代码会报错,因为s的所有权已经转到了闭包。5.获取所有权:获取到外部变量的使用权后,闭包可以访问该变量,外部不能访问。("{}",s ) //move:获取变量的。1.Fn:表示闭包可以多次被调用 每次调用都会借用环境中的变量。

2024-09-23 09:28:07 807

原创 rust学习_所有权

/上面函数中的my_list所有权已经转移到了这里的my_list 所以上面函数打印my list时会报错。1.当一个函数返回一个东西时,如果这个东西是小的(比如数字,布尔),那么函数就像在复印一张纸,给你一张复印件,它还留着原来那张纸。2.但是如果这个东西比较大(比如一段文件,一个列表),那么函数就直接把东西给了你了,自己不留着,你获取了这个东西的所有权。在give_away_list函数内部再次访问 my_list时会报错,因为my_list的所有权已经给了my_list。//a给了b a无效了。

2024-09-22 08:42:16 296

原创 rust学习_结构体

("书架上有:{} 和 {}", bookshelf.book1, bookshelf.book2);2.结构体方法的第一个参数是self 可以是self &self &mut self。假如你有一个现有结构体,并且想创建一个新的实例,但只需要更改其中一部分,就可以使用结构体更新语法。2.赋值和转移, 当你把这个书架(结构体实例)给了别人,别人获得了这个书架和这个书架。1.创建结构体时,就相当于书架上上了新书,这些新书(字段)属于这个书架。// 使用结构体更新语法创建新的实例。

2024-09-21 06:48:00 939

原创 rust学习_异步编程

map(|url| tokio::spawn(download_data(url))) //map方法遍历urls,每个url调用tokio::spawn启动一个新的异步任务。while let Some(message) = messages.next().await { //每次接收到一条消息,就可以立即处理这条消息。1.异步函数:使用async关键字定义一个异步函数,异步函数返回一个实现了Future特性的类型,这个Feature类型代表一个可能还未完成的计算。("任务出错: {}", e),

2024-09-20 10:03:53 971

原创 rust学习_智能指针

概念:是 Cell<T> 的基础,它允许你修改任何类型的值,但使用它时必须非常小心,因为它绕过了 Rust 的所有权和生命周期系统,可能会导致不安全的行为。比喻:假设你和你的朋友都想读同一本书,但是你们不想每个人都购买,于是你们决定一起买一本。但是,你发现了一个秘密房间(比喻:想象你有一块橡皮擦,你可以在任何时候使用它擦掉写下的字,即使书已经在别人手上。比喻:想象你有一个魔法盒子,你可以随时修改里面的东西,但如果你不小心,可能会引发灾难。),在这个房间里,你可以自由地在书上做笔记,只要没有人发现。

2024-09-19 09:49:12 358

原创 rust学习_宏

[proc_macro_derive(Counter)] //标记表明这是一个过程宏 用于派生(derive)宏,并且它的关联的宏的名称是Counter。#[derive(Counter)] //告诉 Rust 编译器使用我们定义的 Counter 过程宏来为 MyStruct 结构体生成代码。就是一个填空题,你只需要填两个数字,它就会帮你生成一个if语句来比较两个数字,并返回较大的那个。// 返回生成的代码 将生成的代码转换回 TokenStream 并返回它。

2024-09-18 09:42:40 419

原创 rust学习_并发编程

想象一下,你有一个特殊的计数器(就像一个可以计数的魔法盒子),这个计数器放在一个保险箱里,这样只有拥有钥匙的人才能打开它并改变里面的数字。在循环内部,每个朋友都获得了一个计数器副本的遥控器(Arc::clone(&counter)),并且通过 thread::spawn 创建了一个新的线程。然后,使用 Arc(原子引用计数)来创建这个计数器的一个安全副本,这样多个朋友(线程)都可以拥有这个计数器的引用,而不会担心数据的安全问题。//这个盒子(handles)目前是空的,但它是专门用来存放“句柄”的。

2024-09-17 10:49:30 1471

原创 rust学习_面向对象

/ 通过Library实例直接调用Book实例的print_details方法。// 使用Book实例来创建Library实例。// 泛型函数,接受实现了 UserBehavior Trait 的引用。//5. main函数中使用library和book。//3.liabrary用book实例。// Book自己的方法。// 创建一个Book实例。/ / 定义一个 Trait,描述用户的基本行为。//4.实现library的构造函数。//1.定义Book结构体。//2.Book的方法。

2024-09-16 21:17:34 1181

原创 rust学习_集合与字符串

Unicode:可以表示ASCII中的字符,也可以表示ASCII之外的字符 如中文的 ”汉“1.|e|:定义闭包, |e|表示闭包接收一个参数e 在上面例子中,e是一个可变引。2.空间复杂度:HashMap 通常比存储同样数量元素的 Vec 需要更多的空间,因为它。2. *e: e是一个可变引用,需要使用 * 来访问它指向的实际值。传给宏的参数,传给宏一组数字,宏会帮我们创建一个包含这些数字的向量。3. *e +=1: 将e指向的值增加1。:就像一本书的内容,你只读,不可修改,也不能带走(拥有数据)

2024-09-14 14:34:15 752

原创 rust学习_文件与IO

rust 文件与io

2024-09-13 11:02:40 493

原创 rust学习_生命周期

比喻: 1.有一个房间放有多个保险箱(每个保险箱是一个结构体),这个房间里的保险箱钥匙的有效期(结构体字段)必须保留到房间钥匙的有效期。你开车进了一个临时停车场(函数),车辆(数据)可以进来,但是当停车场关闭(函数结束),所有车辆必须离开(数据清理)所有权:你买了一个二手车 可以随用使用,也可以卖掉,完全由你控制。借用:你借用了朋友的车,但是车还是朋友的,你用完要还给他。2.标签:给引用添加 生命周期注释。比喻:给钥匙上贴了一个标签,写着只能周一到周五使用。1.钥匙:一个变量的引用。

2024-09-12 15:23:49 199

原创 rust学习_特性

2.如果你想学习该技能(继承该特性),就得学习该技能中的所有方法(实现该特性中的所有方法)1.该技能中有 默认方法, 是不需要你学习的。只要你学习该技能,也就学习了这些默认方法。2. 学习了该技能(继承了该特性),就可以直接调用它的默认方法(不用实现也可以)一个函数返回实现某个特性的参数,则可以直接调用该函数 使用某个特性中的方法。1.把特性比成是一个技能,该技能中包含了 学习该技能用到的几个方法。一个函数定义了参数,是某个特性。只有实现该特性 才能调用这个函数。使用该特性的默认方法。

2024-09-11 16:09:10 261

原创 rust学习_切片

就像一个万能的容器,不管你放进去几个苹果,它都能装得下。不需要为每个苹果数量准备一个专门的容器。2.切片长度是固定的,一旦创建,其长度不变(和golang不同)1.字符串切片:对String类型的引用 如 &str。2.数组切片:对数组或向量的引用 如 &[i32]first() 返回切片第一个元素的引用。is_empty() 检查切片是否为空。2.切片让函数能接受不同长度的数据序列。iter() 返回切片的迭代器。1.切片不拥有数据 只是对数据的引用。len() 返回切片的长度。

2024-09-06 11:20:35 194

原创 echarts动态加载数据

1、echarts安装下载echarts完整版,通过js引入echarts 2、为echarts准备容器 id="main" style="width: 600px;height:400px;">3、通过echarts.init方法初始化echarts实例并通过setOption方法生成简单的图形 type

2017-04-20 00:36:20 1874 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除