当前位置: 首页 > news >正文

Rust 实战练习 - 1. 输入,输出,环境变量,字符,字符串

目标:

  • 获取程序命令行参数
  • 标准输入输出
  • 获取环境变量
  • 字符串,字符初步学习

cargo传递参数,需要加上--

use std::{env, ffi::OsString, io, io::Write};fn main() {println!("OS Env: {:?} => {:?}", env::current_dir().unwrap(), env::current_exe().unwrap());let cmdline = env::args().collect::<Vec<String>>().join(" ");println!("cmdline: {}", cmdline);let _cmdline2 = env::args_os().map(|v| v.into_string().unwrap()).collect::<Vec<String>>().join(" ");// Unix路径拼接, 不是拼接为 长路径!// /usr/bin:../a/b/1.txtprintln!("{:?}", env::join_paths(["/usr/bin", "../a/b/1.txt"]).unwrap());// cargo run -- -a 1 -b xxx --config --set 2// 操作系统有关的 OsStringfor arg in env::args_os() {  // OsStringlet a = arg.to_string_lossy();println!("{a}");}// 环境变量for vars in env::vars_os() { // (OsString, OsString)println!("{:?} \t\t=> {:?}", vars.0, vars.1);break;}// Rust基础类型Stringfor arg in env::args() {  // Stringprintln!("{arg}");}for vars in env::vars() { // (String, String)println!("{:?} \t\t=> {:?}", vars.0, vars.1);break;}println!("PATH={}", env::var("PATH").unwrap());// 使用标准输入输出let mut buf = String::new();let stdin = io::stdin();print!("\r\nPlease input your code: ");_ = io::stdout().flush();if let Ok(n) = stdin.read_line(&mut buf) {_ = io::stdout().write_all(format!("the input len: {} => {}", n, buf).as_bytes());}// 几种常见的字符串类型let a1 = "abc123"; // &strlet a2 = String::from(a1); // String, 会严格检查字符的UTF8范围let a3 = OsStr::new("abc"); // OsStrlet a4 = OsString::from(a2); // OsString,兼容windows等遗留问题,可以存储不在UTF8范围内的字符println!("{:?} {:?}",a3, a4);let _a5 = CString::new("abc_cstring").unwrap(); // 与CStr配合使用//let a6 = unsafe{CStr::from_ptr(ptr)}; // 从一个C语言的 char* 字符串 中创建一个CStr // char是UTF-8编码,所以对于不同字符占用字节不同// 在使用[u8]对中文处理一定要小心,不能完整截取中文字符时,可能程序挂掉let b1 = '1'; // char => 1let b2 = '🍇'; // char, emoji Unicode => 4let b3 = '咋'; // char, UTF-8 => 3println!("{} {} {}", b1.len_utf8(), b2.len_utf8(), b3.len_utf8());// 字符数量计算let c1 = "温度32。Andy喜欢吃🍉~";println!("default UTF8 len: {}, chars(unicode) len: {}", c1.len(), c1.chars().count()); // 29, 14// 所以,统计多语言字符,使用char进行,统计字节数使用默认的utf8编码的.
}

相关文章:

Rust 实战练习 - 1. 输入,输出,环境变量,字符,字符串

目标&#xff1a; 获取程序命令行参数标准输入输出获取环境变量字符串&#xff0c;字符初步学习 cargo传递参数&#xff0c;需要加上-- use std::{env, ffi::OsString, io, io::Write};fn main() {println!("OS Env: {:?} > {:?}", env::current_dir().unwra…...

RuoYi-Vue-Plus(登录流程)

一、前端登录请求 登录按钮: src\views\login.vue 页面中登录片段,调用了handleLogin 方法,如下: @click.native.prevent="handleLogin" <el-button:loading="loading"size="medium"type="primary"style="width:100%;&qu…...

【数学】 【分数】 【字符串】972. 相等的有理数

本文涉及知识点 数学 分数 字符串 LeetCode972. 相等的有理数 给定两个字符串 s 和 t &#xff0c;每个字符串代表一个非负有理数&#xff0c;只有当它们表示相同的数字时才返回 true 。字符串中可以使用括号来表示有理数的重复部分。 有理数 最多可以用三个部分来表示&…...

【4】DongshanPI-Seven 应用开发_文件IO

目录 1.文件IO1.1 文件IO分类1.2 查看系统调用IO用法 2. open 函数3. write 函数4. read 函数5 dup函数 1.文件IO 1.1 文件IO分类 在Linux系统中&#xff0c;一切都是“文件”&#xff1a;普通文件、驱动程序、网络通信等。所有的操作都是通过文件IO来操作的。 在Linux操作文…...

SEO 的未来:GPT 和 AI 如何改变关键词研究

谷歌Gemini与百度文心一言&#xff1a;AI训练数据的较量 介绍 想象一下&#xff0c;有一个工具不仅可以理解错综复杂的关键字网络&#xff0c;还可以预测搜索引擎查询的变化趋势。 这就是生成式预训练 Transformer (GPT) 和其他人工智能技术发挥作用的地方&#xff0c;以我们从…...

面试八股文之JAVA基础

JAVA基础 DNS、CDN&#xff1f;如何实现对象克隆?父子类静态代码块, 非静态代码块, 构造方法执行顺序?String s new String("abc") 创建了几个对象, 分别放到哪里?OSI网络模型七层&#xff1f;应用层协议&#xff1f;http协议和https协议区别&#xff1f;传输层协…...

网络连接中——长连接和短连接详解

一、TCP功能 TCP在真正开始进行数据传输之前,Server 和 Client 之间必须建立一个连接。当数据传输完成后,双方不再需要这个连接时,就可以释放这个连接。 TCP连接的建立是通过三次握手,而连接的释放是通过四次挥手。所以说,每个TCP连接的建立和释放都是需要消耗资源和时间…...

PEReDi 完全隐私的央行数字货币方案

第一个对完全隐私保护建模的方案&#xff0c;基于账户模型&#xff0c;要求交易双方都在线。 角色分类 中央银行 B B B&#xff1a;负责发行数字货币和货币政策&#xff0c;但不控制用户账户的状态&#xff0c;没有能力对交易的发送者或接收者进行去匿名化或披露与特定交易相…...

yolov5+pyside6+登录+用户管理目标检测可视化源码

一、软件简介 这是基于yolov5目标检测实现的源码&#xff0c;提供了用户登录功能界面&#xff1b; 用户需要输入正确的用户名和密码才可以登录。如果是超级管理员&#xff0c;可以修改普通用户的信息&#xff0c;并且在检测界面的右上角显示【管理用户】按钮。 支持图片、视频、…...

电脑如何设置个性便签 电脑个性便签分享

每次坐在电脑前&#xff0c;我都仿佛置身于一片信息的海洋。工作、生活、学习&#xff0c;方方面面的事情都需要我用心去记录。在这样一个快节奏的时代&#xff0c;电脑无疑成了我最得力的助手。但记事的时候&#xff0c;我总希望有一个既方便又有个性的工具&#xff0c;能让我…...

备考ICA----Istio实验12---配置双向TLS Istio Ingress Gateway实验

备考ICA----Istio实验12—配置双向TLS Istio Ingress Gateway实验 本实验部分配置延续上个Istio实验11 1. 重新配置secret 重新配置secret使其带有ca证书可以验证客户端证书是否合法 先删除原有secret,再配置新的secret # 删除原tls类型的secret kubectl -n istio-system d…...

SpringBoot 统一后端返回格式、处理全局异常

文章目录 引言I 统一标准格式1.1 定义返回标准格式1.2 定义状态码1.3 返回数据模型1.4 枚举定义1.5 Json序列化处理1.6 获取枚举字典II 处理全局异常2.1 全局异常处理器2.2 自定义异常2.3 请求数据模型III 预备知识:注解3.1 JsonInclude3.2 JsonIgnoreProperties...

C++学习基础版(一)

目录 一、C入门 1、C和C的区别 2、解读C程序 3、命名空间 4、输入输出 &#xff08;1&#xff09;cout输出流 &#xff08;2&#xff09;endl操纵符 &#xff08;3&#xff09;cin输入流 二、C表达式和控制语句 1、数据机构 特别&#xff1a;布尔类型bool 2、算数运…...

Rust 双向链表 LinkedList 和安全删除元素的方法

一、LinkedList 基本用法 在Rust中&#xff0c;LinkedList 是标准库中 std::collections 模块提供的一个双向链表实现。这个双向链表在每个节点中都保存了其前一个和后一个节点的引用&#xff0c;允许在链表的任一端进行有效的添加和移除操作。 以下是一个简单的示例&#xf…...

Android 开发中 Gradle 使用详解:构建、配置与优化技巧

文章目录 1. 基本概念2. 配置构建脚本2.1 项目级构建脚本2.2 模块级构建脚本 3. 自定义构建变体和应用 flavorDimensions4. 多模块项目4.1 创建模块4.2 配置模块依赖 5. 使用 Gradle 插件6. 使用 Gradle 命令 Gradle 是一种先进的构建工具&#xff0c;它被广泛应用于 Android 开…...

聚道云助力:易快报CDP无缝对接,登录同步一步到位!

一、客户介绍 某企业咨询有限公司是一家专注于为企业提供全方位、高质量咨询服务的领先机构。该公司致力于将先进的管理理念和实践经验与企业实际需求相结合&#xff0c;助力企业实现可持续发展。无论是战略规划、组织优化、人力资源管理&#xff0c;还是市场营销、财务管理等…...

Java解决幸运数字

Java解决幸运数字 01 题目 哈沙德数是指在某个固定的进位制当中&#xff0c;可以被各位数字之和整 除的正整数。 例如 126 是十进制下的一个哈沙德数&#xff0c;因为 (126)10 mod (1 2 6) 0; 126 也是8进制下的哈沙德 数&#xff0c;因为(126)10 (176)8&#xff0c;(126)10…...

将一个nextjs项目部署到vercel

注&#xff1a;下面均为AI创作&#xff08;本人已验证该流程可行&#xff09; 将一个 Next.js 项目部署到 Vercel 是一个相对直接的过程&#xff0c;因为 Vercel 是由同一个团队开发的&#xff0c;专门为 Next.js 优化。以下是部署一个 Next.js 项目到 Vercel 的基本步骤&…...

RocketMQ学习笔记:分布式事务

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、分布式事务的难题2、解决方式2.1、半事务消息和事务回查2.2、代码样例2.2.1、TransactionListener2.2.2、TransactionMQProducer2.2.3、MessageListenerConcurrently2.2.4、流程图 1、分布…...

单臂路由和三层交换机

目录 一.单臂路由 1.单臂路由的工作原理 2.单臂路由的配置 2.1画出拓扑图 2.2配置PC 2.3配置交换机 2.4配置路由器 2.5测试 二.三层交换机 1.三层交换机的概述 2.三层交换机的配置 2.1画出拓扑图 2.2配置PC 2.3配置二层交换机 2.4配置三层交换机 2.5测试 3.拓展 三.总结 一.…...

Win11Debloat:让你的Windows系统重获新生的终极优化指南

Win11Debloat&#xff1a;让你的Windows系统重获新生的终极优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …...

基于Spark+Hadoop+Hive大数据分析的城市街道路灯智能化点亮时间优化研究

前言随着城市化进程的加速&#xff0c;城市街道路灯系统在保障交通安全、提升城市形象与居民生活质量等方面发挥着关键作用。本研究聚焦于城市街道路灯智能化点亮时间的优化&#xff0c;依托大数据分析技术深入挖掘路灯照明需求与环境因素之间的复杂关联。 研究整合多源大数据&…...

Arduino_Threads:Mbed OS平台的嵌入式多线程实践框架

1. Arduino_Threads 库深度解析&#xff1a;面向 Mbed OS 的嵌入式多线程实践框架1.1 库定位与工程价值Arduino_Threads 是 Arduino 官方为基于 Mbed OS 核心的 Arduino 开发板&#xff08;如 Nano RP2040 Connect、Portenta H7、Nicla Sense ME 等&#xff09;设计的轻量级多线…...

从特效 SDK 到 AI 动效平台:Neon Vibe Motion 的技术演进之路

多媒体中台在 B 站主要负责剪辑、拍摄、直播等业务场景的动效渲染&#xff0c;开发维护的 SDK 在后文统一称为特效 SDK。 传统的视频特效生产一般分三条链路&#xff1a; 三条链路存在一个困境&#xff1a;效果丰富度、实时可交互、生产效率&#xff0c;三者不可兼得。 那么能…...

OpenCore Legacy Patcher实用指南:让老旧Mac焕发新生

OpenCore Legacy Patcher实用指南&#xff1a;让老旧Mac焕发新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果不断推进macOS系统更新&#xff0c;…...

UV固化三防漆好用吗?光固化速度与设备要求

UV固化三防漆好用吗&#xff1f;光固化速度与设备要求高效快速的固化优势 UV固化三防漆&#xff08;也称紫外光固化保形涂层&#xff09;是一种专为印刷电路板&#xff08;PCB&#xff09;设计的保护材料&#xff0c;通过紫外光照射触发光引发剂瞬间聚合&#xff0c;实现快速固…...

[具身智能-190]:具身智能常见的仿真平台与常见的模型算法,包括传统算法与AI算法。

在具身智能的开发中&#xff0c;仿真平台与模型算法是相辅相成的两个核心部分。仿真平台为算法提供了安全、高效、低成本的“练兵场”&#xff0c;而算法则是赋予机器人智能的“大脑”。以下为你梳理当前主流的仿真平台以及两类核心的模型算法&#xff1a;传统算法与AI算法。&a…...

AD5144A数字电位器I²C驱动库深度解析与工程实践

1. AD5144A数字电位器驱动库深度解析&#xff1a;面向嵌入式工程师的IC控制实践指南AD5144A是ADI公司推出的四通道非易失性数字电位器&#xff0c;属于AD51xx系列中功能完备、应用灵活的代表型号。该器件通过IC接口实现对四个独立通道的精确电阻调节&#xff0c;支持256级&…...

在Ubuntu 22.04上搞定Gen6D位姿估计:从CUDA 11.8到Pytorch3D 0.7.8的完整环境搭建避坑指南

在Ubuntu 22.04上构建Gen6D位姿估计开发环境的全流程解析 计算机视觉领域的位姿估计技术正在重塑增强现实与机器人导航的边界。Gen6D作为香港大学团队开源的前沿项目&#xff0c;其无需CAD模型的特性为物体位姿识别提供了新思路。本文将彻底拆解Ubuntu 22.04环境下从驱动层到算…...

从豆瓣到StyleTalk:手把手教你用真实场景数据微调你的中文对话模型

从豆瓣到StyleTalk&#xff1a;手把手教你用真实场景数据微调你的中文对话模型 当你已经掌握了基座模型微调的基础技能&#xff0c;如何让模型真正理解特定领域的专业术语&#xff0c;或是模仿某种独特的说话风格&#xff1f;本文将带你深入实战&#xff0c;从数据清洗到效果评…...