20天学会Rust第一天之Helloword

news2024/11/17 20:19:29

阿sir今天开始学习Rust了,至于为什么学习呢? 以后再说
我们都知道,程序设计 = 数据结构 + 算法。
因此,我们依次学习Rust中数据结构的定义&算法的实现,然后用它们实现一个简单的“hello world”

数据结构

Rust提供了两类数据类型:基础数据类型和结构体,阿sir将依次学习

基础数据类型

整数型:整型,按照比特位长度和有无符号分为以下种类:

位长度有符号无符号
8-biti8u8
16-biti16u16
32-biti32u32
64-biti64u64
128-biti128u128

浮点型:Rust支持 32 位浮点数(f32)和 64 位浮点数(f64)
布尔型:用 bool 表示,值只能为 true 或 false
字符型:字符型用 char 表示。类型大小为 4 个字节,代表 Unicode标量值
复合类型:Rust有两类复合类型:元组数组
元组用一对 ( ) 包括的一组数据,可以包含不同种类的数据。举个🌰

let tup: (i32, f64, u8) = (1, 2.1, 3); //定义元组
// tup.0 等于 1
// tup.1 等于 2.1
// tup.2 等于 3
let (x, y, z) = tup; //将tup的值赋给x、y、z
// y 等于 2.1

数组用一对 [ ] 包括的同类型数据。

let a = [1, 2, 3, 4, 5];

结构体

基础语法比较简单,使用struct定义好一个结构体之后就可以直接使用了

//基础语法1:简单定义
struct 名称{
	字段名1:类型,
	字段名2:类型 //注意最后一个字段不添加,
}
//基础语法2:结构体+元组
struct 名称(类型, 类型, 类型);

struct People {
    sex: char,
    age: u16
}

let people = People {
    sex: 'm',
    age: 23
};

struct ColorRGB(u16,u16,u16); //定义rgb

let black = ColorRGB(0, 0, 0);

我们知道在面向对象的语言中,类除了变量外,还有方法,Rust同样支持定义结构体方法

impl People {
    fn is_older(&self, other: People) -> bool {
        return self.age > other.age;
    }
}

let jordy = People {
    sex: 'm',
    age: 23
};

let john = People {
    sex: 'm',
    age: 24
};

jordy.is_older(john)

ok,到目前阿sir学会了Rust的数据结构,下面开始学习算法

算法

所谓算法,都是由基础的代码分支构成:条件判断、循环

条件判断

// 基本语法
if condition1{
	// do something
}else{
	// do something
}

if condition1{
	// do something
}else if condition2{
	// do something
}else{
}

// 举个🌰
let people = People {
    sex: 'm',
    age: 23
};

if people.age >= 18{
	println!("he/she is an audit");
}else if people.age <= 12{
	println!("he/she is an child");
}else{
	println!("he/she is a teenager");
}

循环

// 基础语法1
while condition{
	if condition1{ //满足条件,则跳出循环
		break;
	}
	if condition2{ //满足条件,则跳过本次循环,进入下一次循环
		continue
	}
	//do something
}
// 基础语法2:rust支持用for来循环处理数组
for i in arrays {
    println!("值为 : {}", i);
}
//基础语法3:rust还对无限循环的场景做了特别支持,采用loop关键字即可实现无限循环功能
loop{
	//do something
}

需要注意的是Rust并不支持switch/case结构
OK,现在阿sir学习了基本语法,只是输出一个“HelloWorld”太简单了,不如尝试一个算法届的“HelloWord”——斐波那契(Leetcode),大家可以自己写一下。
在这里插入图片描述
代码如下:

impl Solution {
    pub fn fib(n: i32) -> i32 {
        let mut pre = 0;
        let mut now = 1;
        let mut next = 1;
        let mut count = 2;
		
        if n == 0 {
            return pre;
        }
        if n == 1{
           return now; 
        }
         if n == 2{
           return next; 
        }

        while count <= n {
            next = now + pre;
            pre = now;
            now = next;
            count = count + 1;
        }
        return now;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/107479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是IoC和AOP

IoC是什么&#xff1f; 控制反转&#xff1a;面向对象的设计的理念。上层建筑依赖下层建筑 理解&#xff1a;行李箱设计 轮子 --> 底盘 --> 箱体 --> 行李箱 如果改动轮子&#xff0c;则底盘、箱体、行李箱都需要进行调整。 依赖注入&#xff1a;将底层类作为参数…

Spring之底层架构核心概念-BeanFactory 与ApplicationContext

目录1.BeanFactory2.ApplicationContext3.关系4.总结1.BeanFactory BeanFactory是一个接口 public interface BeanFactory {xxx... }2.ApplicationContext ApplicationContext 也是一个接口&#xff0c;继承自ListableBeanFactory, HierarchicalBeanFactory public interfa…

非零基础自学Golang 第15章 Go命令行工具 15.2 代码获取(get) 15.3 格式化代码(fmt)

非零基础自学Golang 文章目录非零基础自学Golang第15章 Go命令行工具15.2 代码获取(get)15.3 格式化代码(fmt)第15章 Go命令行工具 15.2 代码获取(get) go get命令用于从远程仓库中下载安装远程代码包&#xff0c;这是我们常用且非常重要的指令。 我们在开发程序时往往需要引…

Gateway网关-网关作用介绍

为什么需要网关&#xff1f; 如果允许任何人访问微服务&#xff0c;查看我们的敏感业务&#xff0c;这样数据是不是不安全。如果是我们的工作人员并且有相应的查看权限&#xff0c;我们才提供访问权限。那谁来做这件事呢&#xff1f;就是我们的网关。 网关的功能作用 1&#xf…

鼎镁科技冲刺上交所:年营收18亿 拟募资13亿

雷递网 雷建平 12月21日鼎镁新材料科技股份有限公司&#xff08;简称&#xff1a;“鼎镁科技”&#xff09;日前递交招股书&#xff0c;准备在上交所主板上市。鼎镁科技计划募资12.86亿元。其中&#xff0c;8.84亿元用于轻量化新材料生产、研发建设项目&#xff0c;2.53亿元用于…

消息号F5155处理办法

消息号F5155&#xff08;没有公司代码XDJT中买卖双方的资金权限&#xff09;处理办法 OBA4先检查用户的FI容差组 OB57查看分配用户给容差组&#xff0c;确认是否书写正确的容差组。

《疫情下的编程岁月》序言导读目录

导读 《疫情下的编程岁月》是一部为初学者编写的编程指南&#xff0c;作者是一名 13 岁的编程学习者和优质技术博主。在这部指南中&#xff0c;作者分享了自己在过去 5 年里学习编程技术的经历&#xff0c;并提供了宝贵的建议和技巧&#xff0c;帮助初学者更好地了解编程学习的…

math@间断点@微积分基本定理@变限积分求导公式

文章目录间断点第一类间断点跳跃间断点可去间断点例第二类间断点微积分定理第一基本定理变上限积分函数的导数定积分的角度原函数存在定理&#x1f60a;应用例例微积分第二基本定理变限积分求导公式例math间断点微积分基本定理变限积分的求导公式 间断点 第一类间断点 跳跃间…

SwiftUI开源库之 什么是 Lottie?Airbnb 的跨平台开源库,用于渲染矢量运动图形

什么是 Lottie Lottie是 Airbnb 的跨平台开源库,用于渲染矢量运动图形。我们在 Airbnb 广泛使用 Lottie,它还为整个行业的数千个其他应用程序中的动画提供支持。 发布了适用于 iOS 的Lottie 4.0 。这个主要的新版本通过由 Core Animation 提供支持的全新渲染引擎,为所有 L…

Flutter开发:仿iOS侧滑删除效果的实现

前言 在Flutter开发中&#xff0c;基于原生移动端开发的思想也会运用到混合开发中&#xff0c;尤其是原生移动的的好的特性和交互效果更是如此。在现在的发展情况下&#xff0c;Flutter下的混合开发已经越来越替代原生移动的开发&#xff0c;同时也会继承原生开发的优点&#x…

5年Java经验,定级阿里P7,所有经验全在这份Java核心知识笔记里了

前言 今年的大环境非常差&#xff0c;互联网企业裁员的现象比往年更严重了&#xff0c;可今年刚好是我的第一个“五年计划”截止的时间点&#xff0c;说什么也不能够耽搁了&#xff0c;所以早早准备的跳槽也在疫情好转之后开始进行了。但是&#xff0c;不得不说&#xff0c;这次…

编译和使用hadoop遇到的问题——问题随手记【持续更新】

文章目录编译hadoop遇到的问题java.lang.NoClassDefFoundError: org/apache/hadoop/util/PlatformNamejava.lang.ClassNotFoundException: org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos\$MasterService\$BlockingInterfacejava.lang.ClassNotFoundExceptio…

坚持长期主义 上汽大众ID.纯电品牌迎来加速发展阶段

那些真正能够引领行业发展和变革&#xff0c;并能够持续存活下去的企业&#xff0c;一定是以长期主义作为导向的。 2022年11月&#xff0c;上汽大众ID.纯电家族以月销近万辆、累计销量超10万辆的数据&#xff0c;演绎了一个坚持长期主义汽车大厂的“英雄本色”。长期主义是对抗…

R语言LME4混合效应模型研究教师的受欢迎程度

介绍 最近我们被客户要求撰写关于混合效应模型的研究报告&#xff0c;包括一些图形和统计输出。本教程对多层回归模型进行了基本介绍 。 相关视频&#xff1a;线性混合效应模型(LMM,Linear Mixed Models)和R语言实现 线性混合效应模型(LMM,Linear Mixed Models)和R语言实现…

结构化思维的理解与思考

结构化思维是一种将信息要素从无效转化为有序&#xff0c;提炼核心要点&#xff0c;将信息转化为有结构的知识&#xff0c;更好的帮助大脑理解和记忆&#xff0c;并支持我们清晰表达的通用能力。前言首先&#xff0c;我们先来完成一个游戏&#xff0c;以下有9个计算式&#xff…

微服务应用视角解读如何选择K8S的弹性策略

前言 微服务架构的出现&#xff0c;拆分了庞大的单体应用&#xff0c;让业务之间的开发与协作变得更加灵活。当面临业务流量增加的场景时&#xff0c;往往需要对一些应用组件进行扩容。K8S在应用层面提供了HPA&#xff0c;围绕HPA开源社区延伸出了KEDA这样的弹性组件&#xff…

Compose使用OpenGL+CameraX快速实现相机“拍视频实时滤镜“、”拍照+滤镜“

一、前言 短视频热潮还没有褪去&#xff0c;写这篇文章主要是帮助大部分人&#xff0c;能快速上手实现类似效果&#xff0c;实际上是&#xff1a; CameraX拿相机数据&#xff0c;OpenGL给CameraX提供一个Surface&#xff0c;数据放到OpenGL渲染的线程上去做图像相关操作 Open…

Java项目:springboot+layui就业信息管理

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 该项目采用了spring boot&#xff0c;spring&#xff0c;spring mvc&#xff0c;mybatis作为后端技术框架&#xff0c;这些组合稳定抗打&#x…

Redis缓存穿透、击穿、雪崩到底是个啥?7张图告诉你

目录一、缓存是什么&#xff1f;二、缓存的作用和成本1、缓存的作用&#xff1a;2、缓存的成本&#xff1a;三、缓存作用模型1、根据id查询数据缓存流程四、缓存更新策略1、内存淘汰2、超时剔除3、主动更新五、缓存穿透解决方法&#xff1a;六、缓存雪崩七、缓存击穿1、通过互斥…