草庐IT

rust-0.8

全部标签

[Rust] 对整形溢出的处理

1.两种不同模式下的整形溢出坑了个爹的,书上说的没理解清楚,在Rust程序语言设计中文版3.2中提到了,当使用--release参数进行发布模式构建时,Rust不会检测导致panic的整形溢出,这里需要分两种情况考虑:编译期就可以发现的整形溢出程序运行过程中会发生的整形溢出1.1编译阶段如果是编译期能够确定会发生的整形溢出(程序1-1),无论是不是执行了--release参数都会在构建阶段(cargobuild)发生报错//程序1-1fnmain(){leti:u8=254;leti=i+4;println!("{}!",i);}上述变量i的类型为u8类型,值的范围在(0..=255),经过运

mongodb - Istio 0.8 中的 Mongo 状态集

在运行istio0.8时,我在尝试使用cvallance的sidecar部署有状态的mongodb副本集时遇到了问题,如果我将istio排除在外,一切正常,但是当启用istio时,mongo-sidecars找不到彼此和副本集未配置。下面是我的mongo部署和服务。apiVersion:v1kind:Servicemetadata:labels:service:mongo-testenvironment:testname:mongo-testnamespace:testspec:ports:-name:mongoport:27017clusterIP:Noneselector:serv

Rust通用编程概念

文章目录变量与可变性数据类型标量类型整数类型浮点类型布尔类型字符类型复合类型元组数组函数注释控制流if表达式循环变量与可变性变量与可变性在Rust中,声明变量使用let关键字,并且默认情况下,声明的变量是不可变的,要使变量可变需要在声明变量时,在变量前面加上mut关键字。如下:fnmain(){letmutx=10;println!("x={}",x);//x=10x=20;println!("x={}",x);//x=20}如果将上述代码中的mut关键字去掉,那么在编译代码时就会报错,报错结果就是不能对不可变的变量进行二次赋值,也就是不能对不可变的变量进行修改。如下:常量常量(constan

22. 从零用Rust编写正反向代理,一个数据包的神奇HTTP历险记!

wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/tickbh/wmproxy数据包的自白我是一个小小的数据包,今天我将跟着大部步出发,去体验传说中的HTTP之旅,听前辈说那是一场精彩绝伦的出走之旅。旅行准备  首先,我先来到了出发地,他们在整理各项目数据,包括选择公交(HTTP1)还是自

Rust 语言常见的一些概念(上)

目录1、变量的可变性常量 隐藏2、数据类型2.1标量类型整型浮点型数值运算布尔型字符类型复合类型元组类型数组类型1、变量的可变性变量默认是不可改变的(immutable)。这是Rust提供给你的众多优势之一,让你得以充分利用Rust提供的安全性和简单并发性来编写代码。不过,你仍然可以使用可变变量。接下来我们测试一下,使用cargonewvariables命令在 projects 目录生成一个叫做variables的新项目。修改main.rs,内容如下所示:fnmain(){letv=1;v=2;println!("Hello,world!{v}");}在VSCode中打开,我们发现rust-a

mongodb - 使用 Rust 更新 MongoDB 中的数据

我正在尝试使用Rust更新MongoDB数据库集合中的字段。我正在使用这段代码:externcratemongodb;usemongodb::{Client,ThreadedClient};usemongodb::db::ThreadedDatabase;fnmain(){letclient=Client::connect("ipaddress",27017);letcoll=client.db("DEV").collection("DEV");letfilm_a=doc!{"DEVID"=>"1"};letfilter=film_a.clone();letupdate=doc!{"t

Rust编程基础之函数和表达式

1.Rust函数在之前的文章中,我们已经见到了一个函数:main函数,它是很多程序的入口点。也见过 fn 关键字,它用来声明新函数。Rust代码中的函数和变量名使用 snakecase 规范风格。在snakecase中,所有字母都是小写并使用下划线分隔单词。这是一个包含函数定义示例的程序:fnmain(){println!("Hello,world!");another_function();}fnanother_function(){println!("Anotherfunction.");}我们在Rust中通过输入fn后面跟着函数名和一对圆括号来定义函数。大括号告诉编译器哪里是函数体的开始

Rust入门(二):基础语法

Rust变量rust中使用let关键字来初始化一个变量,变量在初始化的时候必须有一个初始值,同时rust中变量不可变,在初始化之后就不可以再更改了://变量不可变letx=5;//这种情况是不允许的,不可以二次赋值x=6;使用mut关键字可以使得变量成为可以改变的://变量不可变letmutx=5;//这种情况是允许的,mut变量二次赋值x=6;使用const关键字可以定义常量,常量不可以mut,并且必须声明类型,可以在全局定义,全大写。常量可以在任何作用域中声明,比如main函数之前:constX:i32=1000;如果我们先声明一个变量,之后再用let声明同一个变量,这是允许的,我们称之为

python 前夕 0.8 : how to perform a $geowithin with a $centerSphere?

我们已经部署了一个docker容器,其中运行着一个MongoDB数据库。这是一个简单的数据库,我们在其中存储地理引用传感器数据(例如温度、风速)。由于我们想要查询基于搜索半径的这些地理引用观察,我们启用了这样的空间查询:db.ObsStationTemp.createIndex({point:"2dsphere"})db.ObsStationTemp.ensureIndex({"geometry":'2dsphere'})数据在MongoDB中被正确提取,我们实际上可以像这样执行空间查询:db.ObsStationTemp.find({geometry:{$geoWithin:{$ce

21. 从零用Rust编写正反向代理,tokio竟然这样对待socket!

wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/tickbh/wmproxy有请主角上场Socket是集万千宠爱为一身的王子,在操作系统的王国里,他负责对外的所有通讯,所以要想沟通邻国的公主必须经过他,所以大家对他都是万般友好。这天一个Rust城市里的大臣tokio对他发起了邀请,邀请他