随笔分类 -  19.Rust

摘要:Rust常用并发示例代码记录几个常用的并发用法: 1、如何让线程只创建1次 先看一段熟悉的java代码: void method1() { new Thread(() -> { while (true) { System.out.println(String.format("thread-id:%s,timestamp:% 阅读全文
posted @ 2022-09-04 16:14 菩提树下的杨过 阅读(562) 评论(0) 推荐(0) 编辑
摘要:tauri学习(7)-事件(event)接上节继续,今天来研究tauri的事件(event),假设老板提了个需求,希望能实时监控cpu、内存等性能指标,你会怎么做? 思路1: 后端Rust暴露1个command,前端js不停去轮询(参考前文:tauri学习(3)-前端调用Rust代码),即传统的pull模型。 思路2: 后端不停对外喷数据 阅读全文
posted @ 2022-08-28 18:23 菩提树下的杨过 阅读(2810) 评论(0) 推荐(1) 编辑
摘要:tauri学习(6)-系统托盘systemTray接上节继续,研究下系统托盘。 一、tauri.conf.json配置启用系统托盘 二、Rust中添加托盘 运行效果: 但是只有一个托盘图标,点了啥反应都没有。 三、给托盘加菜单 效果: 接下来,给托盘及托盘菜单添加事件响应: use tauri::{ CustomMenuItem, Manager, 阅读全文
posted @ 2022-08-21 18:48 菩提树下的杨过 阅读(1870) 评论(0) 推荐(0) 编辑
摘要:tauri学习(5)-Splashscreen启动界面接上节继续,本文将研究splashscreen,也就是程序的启动界面,通常有2二种应用场景: 1、程序太复杂,主界面完成加载需要很长时间,为了优化用户体验,可以先放一个启动图片,缓解用户等待的焦虑。 2、播放启动广告,手机应用上很常见,进入主程序前,强制让用户看一会儿广告。 在tauri中也有二种实 阅读全文
posted @ 2022-08-21 17:34 菩提树下的杨过 阅读(1767) 评论(0) 推荐(0) 编辑
摘要:tauri学习(4)-多窗口接上节继续,今天研究tauri中的多窗口,要实现多窗口有几种方式: 一、改配置tauri.conf.json 仍然以react项目模式为例,假设我们有2个页面效果: 在浏览器中运行起来长这样: tauri中,如果想开2个窗口,分别对应于这2个页面,可以参考下图配置: (关于windows节点下,具体 阅读全文
posted @ 2022-08-21 12:47 菩提树下的杨过 阅读(4374) 评论(1) 推荐(0) 编辑
摘要:tauri学习(3)-前端调用Rust代码接上节继续,今天研究tauri中,前端如何调用Rust代码。 一、无返回值&无传参 main.rs中加1个hello方法: 然后在main方法中,参考下图暴露hello1: Rust代码准备好之后,前端(假设是react框架)就能调用了: import { invoke } from "@tauri 阅读全文
posted @ 2022-08-20 16:59 菩提树下的杨过 阅读(2597) 评论(0) 推荐(1) 编辑
摘要:tauri学习(2)-a链接伪类visited失效问题A链接的伪类visited在Tauri中不起作用的解决方案 阅读全文
posted @ 2022-08-15 23:28 菩提树下的杨过 阅读(648) 评论(0) 推荐(0) 编辑
摘要:tauri学习(1)-初体验tauri是一个类似Electron的框架,对于开发者最大的区别是后端语言用的是Rust,而且生成的可执行程序更小 阅读全文
posted @ 2022-08-14 18:39 菩提树下的杨过 阅读(2088) 评论(0) 推荐(2) 编辑
摘要:react+rust+webAssembly(wasm)示例前言:WebAssembly(简称wasm)已经出来有几年了,在一些需要高性能的web应用场景中,wasm技术可以让代码执行效率大大提升。react做为目前大厂主流的前端框架之一,搭配上最近几年一直越来越火的Rust语言,可以很好的结合起来,形成wasm的解决方案。国外有高人给出了一篇详细的英文入门 阅读全文
posted @ 2022-08-14 11:37 菩提树下的杨过 阅读(2697) 评论(0) 推荐(0) 编辑
摘要:Rust:axum学习笔记(7) websocket接上一篇继续,今天来学习下如何用axum实现websocket,代码如下: Cargo.toml添加依赖项 [package] name = "websocket" version = "0.1.0" edition = "2021" # See more keys and their defini 阅读全文
posted @ 2022-01-24 22:25 菩提树下的杨过 阅读(2571) 评论(0) 推荐(0) 编辑
摘要:Rust:axum学习笔记(6) SSE(Server Send Event)服务端推送接上一篇继续,SSE也就是服务端推送技术,自html5推出以来基本上各大浏览器都已支持,axum自然也支持,参考下面的代码: async fn sse_handler( TypedHeader(user_agent): TypedHeader<headers::UserAgent>, ) -> Ss 阅读全文
posted @ 2022-01-23 23:01 菩提树下的杨过 阅读(1552) 评论(0) 推荐(0) 编辑
摘要:Rust:axum学习笔记(5) 处理静态资源接上一篇继续,静态资源比如css/js/jpg等,一般不需要服务端做额外的业务处理,直接透传给浏览器就行,axum可以指定将某个目录指定为静态资源,参考下面的代码: let app = Router::new() .nest( "/static", get_service(ServeDir::new 阅读全文
posted @ 2022-01-23 22:38 菩提树下的杨过 阅读(1892) 评论(0) 推荐(0) 编辑
摘要:Rust:axum学习笔记(4) 上传文件接上一篇继续,上传文件是 web开发中的常用功能,本文将演示axum如何实现图片上传(注:其它类型的文件原理相同),一般来说要考虑以下几个因素: 1. 文件上传的大小限制 2. 文件上传的类型限制(仅限指定类型:比如图片) 3. 防止伪装mimetype进行攻击(比如:把.js文件改后缀变成.jpg 阅读全文
posted @ 2022-01-23 12:08 菩提树下的杨过 阅读(2223) 评论(0) 推荐(0) 编辑
摘要:Rust:axum学习笔记(3) extract&#160;接上一篇继续,今天学习如何从Request请求中提取想要的内容,用axum里的概念叫Extract。 预备知识:json序列化/反序列化 鉴于现在web开发中,json格式被广泛使用,先熟悉下rust中如何进行json序列化/反序列化。 [dependencies] serde_json = "1" 阅读全文
posted @ 2022-01-01 23:03 菩提树下的杨过 阅读(2990) 评论(1) 推荐(0) 编辑
摘要:Rust:axum学习笔记(2) response上一篇的hello world里,示例过于简单,仅仅只是返回了一个字符串,实际上axum的response能返回各种格式,包括: plain_texthtmljsonhttp StatusCode...web开发中需要的各种格式,都能返回。talk is cheap ,show me the cod 阅读全文
posted @ 2021-12-26 22:52 菩提树下的杨过 阅读(3087) 评论(2) 推荐(0) 编辑
摘要:Rust:axum学习笔记(1) hello worldaxum是Rust生态的web框架新秀,虽然项目成立不久,但github上的star数已超2.8k,其底层依赖的是高性能的Tokio,Tokio这货就不多说了,借用知乎《深入浅出Rust异步编程之Tokio》上的一张图: Rust中的Tokio几乎是同类框架的性能天花板了,而axum在Tokio基础 阅读全文
posted @ 2021-12-26 21:05 菩提树下的杨过 阅读(4890) 评论(0) 推荐(0) 编辑
摘要:Rust: Tcp编程Demo最基本的Hello World示例: TcpServer端: use std::{net::TcpListener, io::{Read, Write}}; fn main() { //绑定本机3000端口 let listener = TcpListener::bind("127.0.0.1:30 阅读全文
posted @ 2021-12-26 20:14 菩提树下的杨过 阅读(807) 评论(0) 推荐(0) 编辑
摘要:Rust: 如何用bevy写一个贪吃蛇(下)接上篇继续,贪吃蛇游戏中食物是不能缺少的,先来解决这个问题: 一、随机位置生成食物 use rand::prelude::random; ... struct Food; //随机位置生成食物 fn food_spawner( //<-- mut commands: Commands, materi 阅读全文
posted @ 2021-12-19 11:46 菩提树下的杨过 阅读(492) 评论(0) 推荐(0) 编辑
摘要:Rust: 如何用bevy画2d图形及使用按键控制移动bevy自带的画图功能有点弱,得先引入bevy_prototype_lyon, Cargo.toml依赖部分如下: [dependencies] bevy = { version = "0.5.0", features = ["dynamic"] } bevy_prototype_lyon = "0 阅读全文
posted @ 2021-12-14 09:42 菩提树下的杨过 阅读(822) 评论(0) 推荐(0) 编辑
摘要:Rust中的Result枚举Result枚举在Rust中是使用频率极高的一个类型,常用于函数的返回值定义,其源码如下: #[derive(Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)] #[must_use = "this `Result` may be an `Err` 阅读全文
posted @ 2021-11-28 15:48 菩提树下的杨过 阅读(937) 评论(0) 推荐(0) 编辑