专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Rust最常用函数(备忘查询)

  配置vscode调试
  配置参考。下载CodeLLDB,选择rust自动生成launch。json文件{configurations:〔添加一下行,使vechashmap等类型显示正常sourceLanguages:〔rust〕〕}
  将编译文件与标准库的位置进行映射{lldb。launch。sourceMap:{你自己的映射hash和映射路径rustc4b91a6ea7258a947e59c6522cd5898e7c0a6a88f:Usersfeiwu。rustuptoolchainsstableaarch64appledarwinlibrustlibsrcrust}}HelloWorld。rsfnmain(){println!(Hello,World!);}编译运行rustcHelloWorld。rs。HelloWorldHello,World!原始类型
  bool
  布尔值(truefalse)
  char
  字符
  f32,f64
  32位、64位浮点数
  i64,i32,i16,i8
  有符号16。。。整数
  u64,u32,u16,u8
  无符号16位,。。。整数
  isize
  指针大小的有符号整数
  usize
  指针大小的无符号整数
  查看:Rust类型格式化单个占位符println!({},1);多个占位符println!({}{},1,3);位置参数println!({0}是{1}{2},{0}也是{3}编程语言,Rust,cool,language,safe);命名参数println!({country}是一个团结的国家,countryChina);占位符特征:b表示二进制,:0x表示十六进制,:o表示八进制println!(让我们打印76是二进制的{:b},十六进制等价物是{:0x}八进制等价物是{:o},76,76,76);调试特征println!(使用调试特征{:?}在此处打印我们想要的任何内容,(76,A,90));1。58中的新格式字符串letxworld;println!(Hello{x}!);打印风格打印输出print!(HelloWorld);打印后追加新行println!(追加新行);打印为错误eprint!(这是一个错误);打印为新行错误eprintln!(这是新行的错误);变量初始化和声明变量letsomevariableThisisavariable;使变量可变letmutmutablevariableMutable;分配多个变量let(name,age)(ElementalX,20);(全局)常量constSCREAMINGSNAKECASE:i649;注释行注释。。。。。。。。。。。。。块注释外部文档注释!内部文档评论
  另见:注释(doc。rustlang。org)函数fntest(){println!(这是一个函数!);}fnmain(){test();}
  查看:Functions声明宏macrorules!foo{(l:tt){bar!(l);}}macrorules!bar{(3){}}foo!(3);元变量
  item
  程序项
  block
  块表达式
  stmt
  语句
  (注意此选择器不匹配句尾的分号)
  pat
  模式
  expr
  表达式
  ty
  类型
  ident
  标识符或关键字
  path
  类型表达式形式的路径
  tt
  token树
  (单个token或宏匹配定界符()、〔〕或{}中的标记)
  meta
  属性,属性中的内容
  lifetime
  生存期token
  vis
  可能为空的可见性限定符
  literal
  匹配?字面量表达式结构体
  结构体是一个使用关键字struct定义的标称型(nominal)结构体类型structPoint{x:i32,y:i32}letpPoint{x:10,y:11};letpx:i32p。x;元祖结构体structColor(i32,i32,i32);letblackColor(0,0,0);单元结构体
  不关心该类型的内容,只关心它的行为。structSolution;implSolution{。。。}语句与表达式
  在rust中,语句无需返回值,而表达式总要返回值语句letahello。tostring();letbaworld;println!({},b);表达式fnmain(){letx{letahello。tostring();aworld};println!({},x);helloworld}Rust类型类型别名typePoint(u8,u8);letp:Point(41,68);整数letmuta:u328;letb877u64;letc8999i64;letd90;浮点数letmutsixtybitfloat:f6489。90;letthirtytwobitfloat:f327。90;letjustafloat69。69;布尔值lettrueval:booltrue;letfalseval:boolfalse;letjustabooltrue;letistrue85;false字符letfirstletterofalphabeta;letexplicitchar:charF;letimplicitchar8;letemojiu{1f600};字符串字面量letcommunitynameAXIAL;letnoofmembers:strten;println!(社区的名称是{communityname},它有{noofmembers}个成员);
  查看:字符串数组
  这里介绍的是固定长度的数组。rust中常用的是集合类型vec表示的动态数组929798999894012345letarray:〔i64;6〕〔92,97,98,99,98,94〕;letmutarray:〔i32;3〕〔2,6,10〕;array〔1〕4;array〔2〕6;
  使用mut关键字使其可变切片letmutarray:〔i64;4〕〔1,2,3,4〕;下限包括在内,上限不包括在内letmutslices:〔i64〕array〔0。。3〕println!(切片的元素是:{slices:?});元组lettuple(1,A,Cool,78,true);Rust字符串字符串字面量letcs:str备忘清单;为开发者分享备忘单println!(为开发者分享{cs});字符串对象创建一个空字符串对象letmystringString::new;转换为字符串对象letSstringastring。tostring()创建一个初始化的字符串对象letlangString::from(Rust);println!(Firstlanguageis{lang});。capacity()letrandString::from(RandomString);rand。capacity()13
  以字节为单位计算字符串的容量。contains()letnameString::from(ElementalX);name。contains(Element)true
  检查子字符串是否包含在原始字符串中添加单个字符letmuthalftextString::from(Hal);halftext。push(f);Half添加整个字符串letmuthiString::from(Heythere。。。);hi。pushstr(Howareyoudoing??);Heythere。。。Howareyoudoing??println!({hi});原生字符串letstr1rhello;println!({},str1);hello
  原生字符串,无需增加转义字符()转义字节和字节串letstr2ba;println!({},str2);97letstr3bhello;println!({:?},str3);〔92,104,101,108,108,111〕letstr4brhello;println!({:?},str4);〔92,104,101,108,108,111〕Rust动态数组创建动态数组letv:Veci32Vec::new();使用宏letv1vec!〔1,2,3〕;读取元素letvvec!〔1,2,3,4,5〕;letelementv〔100〕;panic,越界letelement2v。get(100);println!({:?},element2);None遍历数组只读取数组中的元素letvvec!〔1,2,3〕;foriinv{println!({},i);}遍历的同时修改数组中的元素letmutvvec!〔1,2,3〕;foriinmutv{i10}多维数组j0j1j2j3j4j5i0123456i1654321letarrvec!〔vec!〔1,2,3,4,5,6〕,vec!〔6,5,4,3,2,1〕〕;常用方法
  len()
  返回vec的长度
  isempty()
  vec是否为空
  push(value)
  在vec尾部插入元素
  pop()
  删除并返回vec尾部的元素或者返回None
  insert(index,element)
  在指定索引处插入元素
  remove(index)
  删除指定索引处的元素并返回被删除的元素,索引越界将panic报错退出
  clear()
  清空vec
  append(vec)
  将另一个vec中的所有元素追加移入vec中,移动的vec变为空
  truncate(len)
  将vec截断到指定长度,多余的元素被删除
  retain(f)
  根据给定的函数,保留满足条件的元素
  drain(range)
  删除vec中指定范围的元素,同时返回一个迭代该范围所有元素的迭代器
  splitoff(index)
  切分vec,索引左边的元素保留在原vec中(含索引),索引右边的元素(不含索引)在返回的vec中枚举在结构体中使用枚举enumIpAddrKind{V4,V6,}structIpAddr{kind:IpAddrKind,address:String,}fnmain(){letipIpAddr{kind:IpAddrKind::V4,address:String::from(127。0。0。1)};}枚举的变体enumIpAddrKind{V4(u8,u8,u8,u8),V6(String),}fnmain(){lethomeIpAddrKind::V4(127,0,0,1);letloopbackIpAddrKind::V6(String::from(::1));}enumMessage{Quit,Move{x:i32,y:i32},Write(String),ChangeColor(i32,i32,i32),}fnmain(){letqMessage::Quit;letmMessage::Move{x:10,y:20};letwMessage::Write(String::from(hello));letcMessage::ChangeColor(10,20,30);}模式匹配结构体〔derive(Debug)〕enumGrade{A,B,C,}enumSubject{Math(Grade),English(Grade),}fnsubjectgrade(sub:Subject){matchsub{Subject::Math(grade)println!(TheMathis{:?},grade),Subject::English(grade)println!(TheMathis{:?},grade),}}fnmain(){subjectgrade(Subject::Math(Grade::A));}Rust运算符比较运算符
  ef
  e等于f
  e!f
  e不等于f
  ef
  e小于f
  ef
  e大于f
  ef
  e小于或等于f
  ef
  e大于或等于flet(e,f)(1,100);letgreaterfe;trueletlessfe;falseletgreaterequalfe;trueletlessequalef;trueletequaltoef;falseletnotequaltoe!f;true算术运算符
  ab
  a被添加到b
  ab
  从a中减去b
  ab
  a除以b
  ab
  通过与b相除得到a的余数
  ab
  a与b相乘let(a,b)(4,5);letsum:i32ab;9letsubtractions:i32ab;1letmultiplication:i32ab;20letpision:i32ab;0letmodulus:i32ab;4位运算符
  gh
  二进制与
  gh
  二进制或
  gh
  二进制异或
  gh
  二进制补码
  gh
  二进制左移
  gh
  二进制右移let(g,h)(0x1,0x2);letbitwiseandgh;0letbitwiseorgh;3letbitwisexorgh;3letrightshiftg2;0letleftshifth4;32逻辑运算符
  cd
  两者都是真的(AND)
  c
  !c
  c为假(NOT)let(c,d)(true,false);letandcd;falseletorcd;trueletnot!c;false复合赋值运算符letmutk9;letmutlk;
  kl
  添加一个值并赋值,然后k9
  kl
  Substrate一个值并赋值,然后k18
  kl
  除以一个值并赋值,然后k9
  kl
  乘一个值并赋值,然后k81
  kl
  按位或并赋值,则k89Rust流程控制If表达式letfoo12;letbar13;iffoobar{println!(foo等于bar);}elseiffoobar{println!(foo小于bar);}elseiffoo!bar{println!(foo不等于bar);}else{println!(Nothing);}For循环letmutvec〔1,2,3〕;forvinmutvec{v1;println!(v的值为:{v});}
  foritemincollection
  foritemincollection。intoiter()
  转移所有权
  foritemincollection
  foritemincollection。iter()
  不可变借用
  foriteminmutcollection
  foritemincollection。itermut()
  可变借用While循环letmutcheck0;whilecheck11{println!(check是:{check});check1;println!(递增后:{check});ifcheck10{break;停止while}}Loop循环loop{println!(你好,世界永远!);}
  无限循环表示Continue继续声明for(v,c)in(0。。101)。enumerate(){println!({c}数字循环);ifv9{println!(我们继续?);continue;}println!{v的值为:{v}};}Break中断语句
  break可以单独使用,也可以带一个返回值letmuti1;letresloop{println!(i是{i});ifi100{breaki100;}i2;}println!({res});28Rust模式匹配match
  match模式匹配,使用ab表示匹配a或b,使用,表示匹配剩余所有选项fnmain(){letgradeGrade::A;matchgrade{Grade::Aprintln!(Good),Grade::Bprintln!(Notbad),Grade::CGrade::Dprintln!(Comeon),println!(emmm),}}enumGrade{A,B,C,D,E,F,}matches!宏
  它可以将一个表达式跟模式进行匹配,然后返回匹配的结果true或falseassert!(matches!(x,A。。Za。。z));assert!(matches!(Some(101),Some(x)ifx100));iflet匹配
  match表达式需要匹配所有的枚举才能结束,但通常我们只需要匹配我们需要的值letx3;matchSome(x){Some(3)println!(Iguessthatxis3),()}
  使用ifletletx3;ifletSome(3)Some(x){println!(Iguessthatxis3);}whileletletmutstackvec!〔〕;stack。push(1);stack。push(2);stack。push(3);whileletSome(top)stack。pop(){println!({},top);}其它模式匹配for循环迭代器for(i,v)incollection。iter()。enumerate(){}letlet(x,,y)(1,2,3);println!({x},{y});函数中的模式匹配fnadd((x,y):(i32,i32))i32{xy}fnmain(){letsumadd(1,2);println!({sum});}忽略参数使用。。忽略剩余参数structPoint{x:i32,y:i32,z:i32,}letoriginPoint{x:0,y:0,z:0};matchorigin{Point{x,。。}println!(xis{},x),}使用忽略部分参数lethello(h,e,l,l,o);matchhello{(h,,,l,o){println!(char:{},{},{},h,l,o)},}匹配命名变量
  以下代码,只要给定的x是Some类型,但Some中的值不是1,都会匹配到yletxSome(10);matchx{Some(1)println!(x1),Some(y)println!(y{:?},y),println!(None),}y10绑定
  运算符允许为一个字段绑定另外一个变量。letgradeA;matchgrade{goodA。。Cprintln!(yourgradeis{},good),println!(Comeon),}〔derive(Debug)〕structPoint{x:i32,y:i32,}fnmain(){letpPoint{x:px,y:py}Point{x:10,y:23};println!(x:{},y:{},px,py);println!({:?},p);}
  如果使用,需要使用(),进行多个模式的绑定match1{num(12){println!({},num);}{}}使用匹配守卫letxSome(2);matchx{Some(1)println!(x1),Some(y)ify2println!(y{:?},y),println!(Nomatch),}y2Rust函数函数命名
  rust的函数使用蛇形命名法(snakecase)fnprintmessage(){println!(Hello,QuickReference!);}参数值
  rust需要为函数的参数标明确定的类型fnanotherfn(a:u8,b:str){println!(我是u8:{},a);println!(我是str:{},b);}fnmain(){anotherfn(10,hello)}返回值
  如果不指定返回值,rust默认返回()类型在bin中的入口函数默认返回()fnmain(){}
  使用指定返回值,如果表达式在最后一行,无需使用returnfnadd(a:i32,b:i32)i32{ifab100{returnab;}ab}永不返回!fndeadend()!{panic!(panic!!!!!);}惯用转换strStringString::from(str);str。tostring();str。toowned();str〔u8〕str。asbytes();
  或者你也可以使用bprintln!({:?},bstr);strVecstr。asbytes()。tovec();str。asbytes()。toowned();StringstrletsString::from(str);letrs。asstr();String〔u8〕letsString::from(str);letvs。asbytes();StringVecletsString::from(str);letvs。intobytes();〔u8〕strletbstr。asbytes();letstrstd::str::fromutf8(b)。unwrap();〔u8〕Stringletbstr。asbytes();letstrString::fromutf8(b。tovec())。unwrap();〔u8〕Vecletbstr。asbytes();letstrb。tovec();letbstr。asbytes();letstrb。toowned();Vecstrletbstr。asbytes()。tovec();letsstd::str::fromutf8(b)。unwrap();Vec〔u8〕letbstr。asbytes()。tovec();letsb。asslice();VecStringletbstr。asbytes()。tovec();letsString::fromutf8(b)。unwrap();杂项类型断言typecastingletaint90;intint到floatletmuttypecast(aintasf64);letorginal:charI;char到int73lettypecasted:i64orginalasi64;
  要在Rust中执行类型转换,必须使用as关键字借用letmutfoo4;letmutborrowedfoofoo;println!({borrowedfoo});letmutbar3;letmutmutableborrowedbarmutbar;println!({mutableborrowedbar});
  这里借用的值使用运算符从值一中借用值解引用letmutborrow10;letderefmutborrow;println!({},deref);
  操作符用于解引用作用域{范围仅限于此大括号letanumber1;}println!({anumber});
  这将产生错误,因为变量anumber的生命周期在大括号处结束
  网站https:doc。rustlang。org

黄晓明叶珂恋爱再添一锤,同时到上海看展,为避嫌分开与好友合影11月11日,有网友晒出了在上海看展的照片,第一张是和黄晓明的合影,第二张是与叶珂的合照,似乎又为两人的恋情增添了一锤。当日,黄晓明穿着白色打底T恤,搭配黑色休闲西装,脖子上挂着吊中超第25轮对阵冠军之争白热化本轮比赛山东泰山面对联赛倒数第一河北队,从上轮宋龙和莫伊塞斯的洗牌就能看的出来本场比赛山东泰山将会轻松的大比分战胜河北队。而武汉三镇将会面对河南嵩山龙门的挑战,河南队已经两连败,第全锦赛男单黑马牛冠凯,曾41胜张本智和夺冠,与小胖打决胜局全国乒乓球锦标赛男子单打14决赛,河南00后小将牛冠凯,32战胜浙江选手向鹏,晋级四强。同时晋级四强的还有代表上海队的樊振东代表广东队的林高远代表山东队的刘丁硕。男子单打4强中,名国内油价或将迎来年内第八跌,三连降累计降幅超150元吨根据今年我国成品油调价时间安排表可知,第22轮油价调整窗口将于11月21日24时开启,届时将迎来11月份最后一次调价,同时意味着今年成品油调价剩下的次数不多了,而全国汽柴油价格维持深圳一女童3岁乳房发育8岁来月经?一文解密儿童性早熟如今,儿童性早熟越来越常见,可在有些家长看来这并不是病,可能只是长得快而已。最近,深圳市南山区妇幼保健来了一位特别的患者,女孩名叫小希(化名),3岁出现乳房发育,直到8岁来了月经,午评沪指涨1。51创业板指涨2。49,Web3。0概念领涨,地产股医药股爆发金融界11月10日消息隔夜外围市场大涨,A股受提振今日跳空高开,盘初市场震荡回落,沪指3100点得而复失,随后三大指数横盘整理,盘面上,Web3。0概念继续大放异彩,地产产业链上的富力地产前10个月销售额352亿元,467亿元债券已全部展期富力地产(02777。HK)视觉中国资料图11月11日晚间,富力地产(02777。HK)披露10月份销售情况。销售数据显示,10月份富力地产总销售收入约20。5亿元,销售面积约13二十条公布!地产股狂欢,信心恢复了多少?摘要有喜有忧(欢迎关注杠杆地产)撰文杆姐编辑雯雯信心终于来了一些!今天一则重要的通知发布,强调进一步提升防控的科学性精准性,最大程度保护人民生命安全和身体健康,最大限度减少疫情对经重磅!证监会国资委联合发文,事关支持央企科技创新,包括发债REITs试点证监会11日消息,证监会国资委日前联合发布关于支持中央企业发行科技创新公司债券的通知,明确通过优化市场服务运行机制监管考核标准融资决策程序等方式多措并举支持中央企业发行科技创新公司互联网摸鱼日报(202211)InfoQ热门话题1。低碳数字化时代,数据中心的转型之道从制冷到智冷白皮书httpswww。infoq。cnarticleXheatwzU9gQDUN0rUAJ02。字节跳动提出K乌镇峰会嘉宾热议数实融合互联网不是来分蛋糕的,而是做增量的11月10日,2022年世界互联网大会乌镇峰会举行数字经济论坛。浙江新闻客户端记者朱海伟摄互联网,是远在云端的虚拟空间实体经济,是近在眼前的真实存在。两者相加,能引发怎样的化学反应
二龙湖往事黄金劫今日上线四平警事原班人马再聚首爆笑搞黄金二龙湖浩哥IP最新力作二龙湖往事黄金劫今日起在爱奇艺腾讯视频首播上线,该片继续由张浩导演并领衔主演,九孔孙睿祺张贵生王双宝巴多白红标何铁红等主演,张涛董政吴尔渥大漠友情出演。二龙湖刘亦菲的人间清醒发言,她的人生哲学治愈了多少焦虑的普通人前段时间去有风的地方热播,除了掀起了一片旅游潮和对裸辞的讨论。主角刘亦菲的身材也一度被推上了热搜,而这一次不再是我们熟知的对她的褒奖,更多是对她的嘲讽和谴责,而这一切只是因为她的一抗美援朝的终极骗局,美国傻傻被中国欺骗41年,得知后脸都绿了二战结束之后,以美国和苏联为首的世界局势正式定型,由于双方都已研制出核武器,所以在巨大杀伤性的威慑下,彼此均不敢先行出手,只能维持着数十年的冷战,可尽管冷战是一场没有硝烟的对抗,但红色电影故事(74)新中国第一部儿童抗战影片鸡毛信编文孙海帆抗日战争期间,广大抗日根据地建立了抗日儿童团青年抗日救国联合会中华民族抗日先锋队等青年组织,受共产党的委托,直接领导抗日儿童团及其他儿童组织的工作。儿童团的主要任务是学习徐梦迪著名女演员闫学晶儿媳妇,嫁星二代老公林傲霏孕妇照惊艳头条创作挑战赛娱乐娱评大赏影视杂谈请关注年龄不是人生的枷锁,每天给你带来一位名人感人的故事。小编白杨徐梦迪,中国内地女演员,出道以来先后拍摄过衰爸神童等4部数字电影,出演过音乐剧白(经济)第五届中国重庆涪陵榨菜产业国际博览会开幕当日,为期3天的第五届中国重庆涪陵榨菜产业国际博览会暨2023世界榨菜产业创新大会在重庆涪陵区开幕,来自国内外的数十家榨菜腌菜企业到场参展。2月20日,在第五届中国重庆涪陵榨菜产业春季虚火上浮?快来熬制一煲味甘鲜美滋阴清热的靓汤今日推荐菜干青榄响螺汤材料菜干60克,青榄56颗,响螺头3个,猪扇骨1块,蜜枣3枚,生姜15克,食盐适量。做法1。所有食材洗净,菜干提前泡发,焯水螺头用清水泡软后,切做小块或宽条猪张大大的直播间,当代精神病人的失乐园张大大突然,就看惯张大大了。张大大现在真的太火了,这个表情包也终于可以用上了。虽然天天上热搜,每次都不重样儿,但怎么就讨厌不起来,甚至有点上头呢?张大大直播哭了的话题再次登上了热搜春不养,夏易病,请收好这份春季养生饮食攻略春为四季之首,万象更新之始,黄帝内经中说春三月,此谓发陈,天地俱生,万物以荣。春季阳气上升,大地回暖,万象更新,生机盎然,一年之计在于春,春季也是一年中养生的黄金季节,春不养,夏易郁证肛病论赵医生说健康201810112205素问五脏别论载魄门亦为五脏使。魄门即肛门,从中医整体观来看,肛门局部的生理功能与病理变化同样受到五脏的影响,需要依赖心神的主宰肺气的肃降肝气的条一咳嗽就漏尿,多是脾虚不固有的人感冒后期咳嗽到无力,还出现漏尿的现象。漏尿这个问题现在我们普遍认为是神经方面问题或者是盆底肌和尿道括约肌的直接间接功能损伤造成的。中医看问题都是整体对待的,漏尿绝对不是单单一
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网