daily notes[45]

文章目录

  • basic knowledge
  • references

basic knowledge

  1. the variable in Rust is not changed.
let x=5;
x=6;

Rust language promotes the concept that immutable variables are safer than variables in other programming language such as python and and are in favour of the concurrent operations.
of course,if actual coding requires more flexibility, the variable in Rust can be made mutable by adding the mut keyword.

let mut x: u32=5;
x=6;

why does Rust provide the concept of constants in addition to variable immutability?

const x:u32 =5;
  • To declare a constant, you need to use the const keyword, moreover, by convention, constants names should be defined in Capital letters separated by underscores,such as MAX_POINTS.

  • Constants cannot be declared with the mut keyword.

  • any constant must have an explicitly declared type.the following definition is incorrect.

const x=6;
  • the value of a constant must be completely defined during compilation,which is a major difference from immutable variables.
  • the following code can be compiled without any error.
let random_number = rand::random(); 

but the following code will encounter an error when compiled.

const random_number: u32  = rand::random(); 

by the way, Rust also has a variable type which is similar to constants,but the difference is it can be accessed in global scope and has a fixed memory address.

static STR_HELLO: &str = "Hello, world!"; // 不可变静态变量
static mut COUNTER: u32 = 0; // 可变静态变量

in addition,the static variable can be immutable ,but accessing them requires an unsafe block.

// 不可变静态变量 - 安全访问
static APP_NAME: &str = "MyApp"; // ✅ 安全// 可变静态变量 - 需要 unsafe 访问
static mut COUNTER: u32 = 0;     // ❗ 声明为可变fn main() {// 访问可变静态变量需要 unsafeunsafe {COUNTER += 1; // ✅ 在 unsafe 块中访问println!("Counter: {}", COUNTER);}// COUNTER += 1; // ❌ 错误:不在 unsafe 块中
}

when a variable needs to have various type in different scope ,you can use variable shadowing ,that is say,you can use let to delcare the same variable name again.

  1. Rust is a statically and strongly typed language.
categorytypeexplanation
scalari8, i16, i32, i64, i128, isize
u8, u16, u32, u64, u128, usize
signed/uinsigned integer,isize/usize depends on the machine architecture
f32, f64float/double number,by default as f64
boolboolean,truefalse
charUnicode scalar(4 bytes)
compound(T1, T2, T3, ...)tuple:it has Fixed length and can stores elements of the various types.
[T; N]array:it has Fixed length and stores elements of the same type. The data is stored on the stack.

furthermore,the dynamically resizable collections can use Vec<T>,String , and so on.they are allocated in the heap,but they are not primitive data types,in fact,they are part of standard library.

  1. function
charactergrammer exampleexplanation
function definitionfn function_name() { ... }use fn keyword
argumentsfn foo(x: i32, y: String)the arguments must explicitly declare type
return valuefn foo() -> i32 { ... }it is followed by -> to declare the return type.
implicitly returnfn foo() -> i32 { 5 }the return value is the last expression without semicolon in function body
explicitly returnfn foo() -> i32 { return 5; }to return early from a function,you can use return keyword.
function pointerlet f: fn(i32) -> i32 = my_function;function can be passed as value and used.
发散函数fn bar() -> ! { loop {} }! 标记,表示函数永不返回

4 . 控制语句

  • Rust 的控制语句主要分为两类:条件分支 和 循环,它们都是表达式。
  • if 表达式允许你根据条件执行不同的代码分支,格式为 :if…else或者if…else if…else…。
  • loop 关键字会创建一个无限循环,直到显式地使用 break 跳出。可以在 break 后跟一个表达式,这个表达式将成为 loop 表达式的返回值。continue也可以像其它语言一样使用。
  • while 循环在条件为 true 时持续执行。
  • for 循环遍历集合。如下所示。
fn main() {let x = [11, 12, 13, 14, 15];for element in x {println!("the value is: {}", element);}// 或者使用迭代器for element in x.iter() {println!("the value is: {}", element);}
}
  • range 由标准库提供,生成一个数字序列。
(1..4):生成 1, 2, 3(不包含结束值)。(1..=4):生成 1, 2, 3, 4(包含结束值)。(start..end).rev():可以反转范围。
  • match可进行模式匹配和穷尽性检查。match根据一个值的不同情况,执行不同的代码并返回相应的结果。
fn main() {let number = 3;// 使用 match 将数字转换为星期几let day = match number {1 => "星期一",2 => "星期二", 3 => "星期三",4 => "星期四",5 => "星期五",6 => "星期六",7 => "星期日",_ => "无效的数字,请输入1-7", // _ 通配符处理所有其他情况};println!("数字 {} 对应的是: {}", number, day);
}

references

  1. https://www.rust-lang.org/learn/
  2. deepseek

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

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

相关文章

技术奇点爆发周:2025 年 9 月科技突破全景扫描

技术奇点爆发周&#xff1a;2025 年 9 月科技突破全景扫描当中国 "祖冲之三号" 量子计算机在特定任务上超越经典超级计算机一千万亿倍的算力新闻&#xff0c;与 OpenAI 宣布 100 亿美元定制芯片量产协议的消息在同一周密集爆发时&#xff0c;我们真切感受到了技术革命…

分布式专题——10.3 ShardingSphere实现原理以及内核解析

1 ShardingSphere-JDBC 内核工作原理当往 ShardingSphere 提交一个逻辑SQL后&#xff0c;ShardingSphere 到底做了哪些事情呢&#xff1f;首先要从 ShardingSphere 官方提供的这张整体架构图说起&#xff1a;1.1 配置管控在 SQL 进入 ShardingSphere 内核处理&#xff08;如解析…

移动语义的里里外外:从 std::move 的幻象到性能的现实

我们都已经听过这样的建议&#xff1a;“使用 std::move 来避免昂贵的拷贝&#xff0c;提升性能。” 这没错&#xff0c;但如果你对它的理解仅止于此&#xff0c;那么你可能正在黑暗中挥舞着一把利剑&#xff0c;既可能披荆斩棘&#xff0c;也可能伤及自身。 移动语义是 C11 带…

selenium完整版一览

selenium 库驱动浏览器selenium库是一种用于Web应用程序测试的工具,它可以驱动浏览器执行特定操作,自动按照脚本代码做出单击、输入、打开、验证等操作,支持的浏览器包括IE、Firefox、Safari、Chrome、Opera等。而在办公领域中如果经常需要使用浏览器操作某些内容,就可以使用se…

[Linux]学习笔记系列 -- lib/kfifo.c 内核FIFO实现(Kernel FIFO Implementation) 高效的无锁字节流缓冲区

文章目录lib/kfifo.c 内核FIFO实现(Kernel FIFO Implementation) 高效的无锁字节流缓冲区历史与背景这项技术是为了解决什么特定问题而诞生的&#xff1f;它的发展经历了哪些重要的里程碑或版本迭代&#xff1f;目前该技术的社区活跃度和主流应用情况如何&#xff1f;核心原理与…

MFC_Install_Create

1. 安装MFC 编写MFC窗口应用程序需要用到Visual Studiohttps://visualstudio.microsoft.com/zh-hans/&#xff0c;然后安装&#xff0c;要选择使用C的桌面开发&#xff0c;再点击右边安装详细信息中的使用C的桌面开发&#xff0c;往下滑&#xff0c;有一个适用于最新的v143生成…

Langchain4j开发之AI Service

学习基于Langchain4j的大模型开发需要学习其中Ai Service的开发模式。里面对大模型做了一层封装&#xff0c;提供一些可以方便调用的api。其中有两种使用Ai Service的方式。一.编程式开发1.首先引入Langchain4的依赖。<dependency><groupId>dev.langchain4j</gr…

认识神经网络和深度学习

什么是神经网络&#xff1f;什么又是深度学习&#xff1f;二者有什么关系&#xff1f;……带着这些疑问&#xff0c;进入本文的学习。什么是神经网络神经网络&#xff08;Neural Network&#xff09;是一种模仿生物神经系统&#xff08;如大脑神经元连接方式&#xff09;设计的…

医疗行业安全合规数据管理平台:构建高效协作与集中化知识沉淀的一体化解决方案

在医疗行业中&#xff0c;数据不仅是日常运营的基础&#xff0c;更是患者安全、服务质量和合规管理的核心载体。随着医疗业务的复杂化和服务模式的多元化&#xff0c;各类机构——从大型医院到科研中心——都面临着海量文档、报告、影像资料和政策文件的管理需求。这些资料往往…

Day25_【深度学习(3)—PyTorch使用(5)—张量形状操作】

reshape() squeeze()unsqueeze()transpose()permute()view() reshape() contiguous() reshape() 一、reshape() 函数保证张量数据不变的前提下改变数据的维度&#xff0c;将其转换成指定的形状。def reshape_tensor():data torch.tensor([[1, 2, 3], [4, 5, 6]])print(data…

第十八篇 开发网页教学:实现画布、绘画、简易 PS 方案

在网页开发领域&#xff0c;画布功能是实现交互创作的重要基础&#xff0c;无论是简单的绘画工具&#xff0c;还是具备基础修图能力的简易 PS 方案&#xff0c;都能为用户带来丰富的视觉交互体验。本篇教学将围绕 “学习 - 实践 - 实操” 的核心思路&#xff0c;从技术原理讲解…

封装形成用助焊剂:电子制造“隐形桥梁”的技术突围与全球产业重构

在5G通信、人工智能、新能源汽车等新兴技术驱动下&#xff0c;全球电子制造业正以年均6.8%的增速重构产业链。作为电子元件焊接的核心辅料&#xff0c;封装形成用助焊剂&#xff08;又称电子封装用助焊剂&#xff09;凭借其“优化焊接质量、提升可靠性、降低制造成本”的核心价…

【完整源码+数据集+部署教程】零件实例分割系统源码和数据集:改进yolo11-GhostHGNetV2

背景意义 研究背景与意义 随着工业自动化和智能制造的迅速发展&#xff0c;零件的高效识别与分割在生产线上的重要性日益凸显。传统的图像处理方法在处理复杂场景时往往面临着准确性不足和实时性差的问题&#xff0c;而深度学习技术的引入为这一领域带来了新的机遇。特别是基于…

墨色规则与血色节点:C++红黑树设计与实现探秘

前言​ 前几天攻克了AVL树&#xff0c;我们已然是平衡二叉树的强者。但旅程还未结束&#xff0c;下一个等待我们的&#xff0c;是更强大、也更传奇的**终极BOSS**——红黑树。它不仅是map和set的强大心脏&#xff0c;更是C STL皇冠上的明珠。准备好了吗&#xff1f;让我们一…

大数据时代时序数据库选型指南:为何 Apache IoTDB 成优选(含实操步骤)

在数字经济加速渗透的今天&#xff0c;工业物联网&#xff08;IIoT&#xff09;、智慧能源、金融交易、城市运维等领域每天产生海量 “带时间戳” 的数据 —— 从工业设备的实时温度、电压&#xff0c;到电网的负荷波动&#xff0c;再到金融市场的每秒行情&#xff0c;这类 “时…

MAZANOKE+cpolar让照片存储无上限

文章目录前言1. 关于MAZANOKE2. Docker部署3. 简单使用MAZANOKE4. 安装cpolar内网穿透5. 配置公网地址6. 配置固定公网地址总结当工具开始理解用户的需求痛点时&#xff0c;MAZANOKE与cpolar这对搭档给出了“轻量化”的解决方案。它不追求浮夸的功能堆砌&#xff0c;却用扎实的…

正则表达式 - 元字符

正则表达式中的元字符是具有特殊含义的字符&#xff0c;它们不表示字面意义&#xff0c;而是用于控制匹配模式。基本元字符. (点号)匹配除换行符(\n)外的任意单个字符示例&#xff1a;a.b 匹配 "aab", "a1b", "a b" 等^ (脱字符)匹配字符串的开始…

suricata源码解读-事务日志

注册事务日志线程模块 void TmModuleTxLoggerRegister (void) {tmm_modules[TMM_TXLOGGER].name "__tx_logger__";tmm_modules[TMM_TXLOGGER].ThreadInit OutputTxLogThreadInit;tmm_modules[TMM_TXLOGGER].Func OutputTxLog;tmm_modules[TMM_TXLOGGER].ThreadExi…

【CSS】层叠上下文和z-index

z-index 的作用范围受“层叠上下文&#xff08;stacking context&#xff09;”影响。&#x1f539; 1. z-index 的基本作用 控制元素在 同一个层叠上下文&#xff08;stacking context&#xff09; 内的堆叠顺序。值越大&#xff0c;显示层级越靠上。&#x1f539; 2. 什么是层…

自动化脚本的降本增效实践

一、自动化脚本的核心价值自动化脚本通过模拟人类操作完成重复性任务&#xff0c;其核心价值体现在三个维度&#xff1a;首先&#xff0c;在时间成本方面&#xff0c;标准化的数据处理流程可缩短90%以上的操作耗时&#xff1b;其次&#xff0c;在人力成本上&#xff0c;单个脚本…