
rust开发常用第三方库
rust开荒,不需要造轮子,在开发中用的库,都把例子写出来
qwsaedca
这个作者很懒,什么都没留下…
展开
-
身份证号码的正则表达式及验证详解(rust版实现,Regex)
身份证号码的正则表达式及验证详解(rust版实现,Regex)原创 2022-06-17 15:05:19 · 1064 阅读 · 0 评论 -
rust的使用css选择器解析网页数据的第三方库nipper,类似java的jsoup库,比另一个库crabquery好用多了
因为在java上习惯了使用了jsoup解析抓取到的网页,在rust的crate.io中搜索jquery,首先出来的就是crabquery,猛一用,感觉还行,用着用着就发现实现在简单了,功能很少,很基础,但胜的名字误导人,又翻了翻才找到了下面这个库https://docs.rs/nipper/0.1.8/nipper/,而且还是国人开发的。大致用了下,功能和jsoup差不多。use nipper::Document;fn main() { let html = include_str!.原创 2020-07-30 17:25:49 · 1176 阅读 · 0 评论 -
rust-opencv 从内存中读取一张图片
//从内存中加载图片pub fn get_img_info_mem(img_data: Vec<u8>) -> Result<core::Mat,String> { let mut data= Vector::from_iter(img_data); let data=VectorOfu8::from(data);//和上面的一行代码可以合成一行 imgcodecs::imdecode(&data, IMREAD_COLOR).or_el原创 2020-06-22 14:23:05 · 1648 阅读 · 0 评论 -
windows10下rust使用opencv4踩坑
windows10下rust使用opencv4库opencv = "0.41.0"首先这个库是对opencv的绑定,而opencv2.4版以后就不对C API进行维护了,虽然也是访问(但功能是都是以前的C API,新的方法功能都在C++文件中)。rust的opencv库不是简单的绑定,FFI相关的内存处理,让你使用起来完全不用关心这些细节.而且文档很好,可以很好的使用C++相关opencv的书籍例子.对C++都放在cv这个命名空间进行了rust习惯的模块划分。rust第三方库bin原创 2020-06-20 15:00:07 · 2493 阅读 · 3 评论 -
opencv官方说2.4版以后都不在兼容C API
OpenCV(开源计算机视觉库:http://opencv.org)是BSD许可的开源库,其中包含数百种计算机视觉算法。该文档描述了所谓的OpenCV 2.x API,与基于C的OpenCV 1.x API相比,它实际上是C ++ API(自OpenCV 2.4发行以来,C API已被弃用,并且未经“ C”编译器进行测试)rust目前只兼容C语言的ABI,经测试发现opencv2和opencv3.4版本还是支持C API的,也就是rust经过bindgin翻译头文件成rust代码后还可以访问,目前只测试原创 2020-06-18 16:47:36 · 637 阅读 · 0 评论 -
在windows下绑定opencv库使用
rust的FFI机制可以很轻松与C库进行调用,但也复杂,如果你自己人工翻译代码的话,还好有bindgen工具。本来觉得像opencv这样的库,rust应该有人进行绑定使用,确实有,但很复杂,原来是多种的,最坑的就是墙,opencv-rust https://github.com/twistedfall/opencv-rust 这个库在配置windows下使用时,光依赖库就下不下去了。然后再看其它库,总之就是感觉想使用起来很复杂。后来仔细看看了FFI相关文档,资料中都是再三强调,C++提供AB原创 2020-06-15 15:58:41 · 388 阅读 · 0 评论 -
rust serde序列化Arc包裹的属性报错
serde加个feature,rcserde = {version="1.0",features = ["derive","rc"]}原创 2020-05-14 17:25:57 · 486 阅读 · 0 评论 -
rust web开发中直接在内存中生成zip文件返回
在rust中使用zip进行压缩时,尤其是在web开发中,生成多个报表打包成一个zip文件,不想生成临时文件,一般喜欢直接在内存中生成好zip文件,然后序列化成流响应返回给web端。cargo.tomlzip = "0.5.5"walkdir = "2"代码:use std::fs::File;use std::io::{copy, Read, Seek, Write, sink, BufWriter};use std::path::Path;use std::str;use s原创 2020-05-13 14:48:49 · 825 阅读 · 0 评论 -
rust zip库使用
Cargo.toml增加依赖zip = "0.5.5"#压缩目录使用walkdir = "2"use std::fs;use std::fs::File;use std::io::{copy, Read, Seek, Write};use std::path::Path;use std::str;use walkdir::{DirEntry, WalkDir};use zip::write::FileOptions;/// 都没有进行错误处理,本例子是参考官方例子,其中压缩目原创 2020-05-09 16:01:26 · 4903 阅读 · 0 评论 -
serde序列化结构体中使用chrono的日期字段,i64转换为了日期字段例子
use chrono::prelude::*;use serde::{Deserialize, Serialize};fn main() { // let date: DateTime<Local> = Local::now(); // println!("{}", date.format("%Y-%m-%d %H:%M:%S").to_string()) ...原创 2020-05-01 22:26:24 · 1235 阅读 · 0 评论 -
rust md5 加密库
Cargo.toml 增加依赖rust-crypto = "^0.2"use crypto::digest::Digest;use crypto::md5::Md5;pub fn md5<S:Into<String>>(input: S) -> String { let mut md5 = Md5::new(); md5.inp...原创 2020-05-07 15:01:21 · 3634 阅读 · 0 评论 -
rust base64 例子
base64 = "0.12.1"use base64::{encode, decode};fn main() { let a = b"hello world"; let b = "aGVsbG8gd29ybGQ="; assert_eq!(encode(a), b); assert_eq!(a, &decode(b).unwrap()[..]...原创 2020-05-07 15:17:05 · 2145 阅读 · 0 评论 -
rust用宏实现尾递归
实现:https://github.com/samsieber/tco这个思路很清奇——用属性宏来实现尾递归调用优化。官方的例子:#[tco::rewrite]fn fac_with_acc(n: u128, acc: u128) -> u128 { if n > 1 { fac_with_acc(n - 1, acc * n) } else...原创 2020-05-08 15:05:49 · 644 阅读 · 0 评论 -
rust windosw gui库(只为用到时好找)
仓库 :https://github.com/gabdube/native-windows-gui原创 2020-05-08 15:07:30 · 1269 阅读 · 0 评论 -
rust 字符编码编解码库-encoding
Cargo.toml增加依赖encoding = "0.2.33"rust默认使用utf-8编码,但使用一些第三方库进行一些功能开发时会遇到乱码问题,乱码一般就是解码方式不对,比如用GBK编码,然后就UTF-8方式解码。我在windows系统下用winrar压缩一个中文名字的文件,用rust的zip库解压时,发现文件名乱码。怀疑winrar进行文件名进行编码是使用了操作系统本地字符串(中...原创 2020-05-08 15:17:42 · 7094 阅读 · 0 评论