当前位置: 首页 > 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.拓展 三.总结 一.…...

FastbootEnhance:Windows平台终极Fastboot工具箱与Payload提取器完整指南

FastbootEnhance&#xff1a;Windows平台终极Fastboot工具箱与Payload提取器完整指南 【免费下载链接】FastbootEnhance A user-friendly Fastboot ToolBox & Payload Dumper for Windows 项目地址: https://gitcode.com/gh_mirrors/fa/FastbootEnhance 你是否曾经因…...

全球眼用缓释药市场调查:预计2032年将攀升至25.46亿美元

在全球人口老龄化加速与慢性眼病患病率持续攀升的背景下&#xff0c;眼用缓释药市场正迎来历史性增长窗口。据QYResearch&#xff08;北京恒州博智国际信息咨询有限公司&#xff09;最新统计&#xff0c;2025年全球眼用缓释药市场销售额已达15.00亿美元&#xff0c;预计2032年将…...

进程管理器大横评:从 PM2 到 Systemd 的选型与实战

一、为什么需要进程管理器&#xff1f; 在服务器运维的世界里&#xff0c;“进程管理器”&#xff08;Process Manager&#xff09;是一个看似基础却极其关键的角色。它的核心使命可以概括为&#xff1a;确保你的应用程序在服务器重启、进程崩溃、资源耗尽等意外情况下&#xf…...

FlashAttention 深度解读:让大模型注意力机制“一口气算完“

FlashAttention&#xff1a;让大模型注意力机制"一口气算完" 想象你在厨房做菜。冰箱在远处&#xff08;HBM&#xff0c;高带宽内存&#xff09;&#xff0c;料理台在面前&#xff08;SRAM&#xff0c;片上缓存&#xff09;。每次要切菜&#xff0c;都得走过去开冰箱…...

我见过最聪明的技术人,都在偷偷培养这3种“非技术能力”

在软件测试行业摸爬滚打这些年&#xff0c;我见过太多天赋异禀的技术从业者&#xff1a;有人能一夜吃透新的自动化测试框架&#xff0c;有人能对着流量日志半小时定位出隐藏半年的内存泄漏问题&#xff0c;有人能把性能测试指标优化到远超行业标准。可几年过去&#xff0c;真正…...

【Elasticsearch从入门到精通】第10篇:Elasticsearch REST API最佳实践——Content-Type、模糊性与访问控制

上一篇【第09篇】Elasticsearch API规范详解——多索引、日期数学与通用选项 下一篇【第11篇】Elasticsearch索引API详解——索引创建、删除与别名管理&#xff08;明日更新&#xff0c;敬请期待&#xff09; 摘要 掌握Elasticsearch REST API的使用规范不仅能避免常见错误&am…...

HS2-HF_Patch:终极Honey Select 2汉化与优化完整指南

HS2-HF_Patch&#xff1a;终极Honey Select 2汉化与优化完整指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF_Patch是专为Honey Select 2游戏设计的终…...

CANN-昇腾NPU分布式训练-8卡到64卡怎么线性扩展

8 卡训练 Llama2-7B 的吞吐约 1800 tokens/s/p。64 卡应该是 8 卡的 8 倍吗&#xff1f;实际上只能到 6-7 倍。缺失的 1-2 倍被通信开销吃了。这篇分析昇腾NPU上分布式训练的扩展效率。 扩展效率定义 扩展效率 实际加速比 / 理论加速比8 卡 → 64 卡&#xff1a;理论加速比 8…...

安徽话语音合成从0到商用,11步完成ElevenLabs API对接、情感注入与皖北/皖南口音校准

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;安徽话语音合成的地域语言学基础与商用价值 安徽话并非单一均质方言&#xff0c;而是涵盖江淮官话&#xff08;如合肥话、扬州话&#xff09;、中原官话&#xff08;如阜阳话&#xff09;、赣语&#xff08;如…...

终极ANI-RSS界面定制指南:打造专业级追番体验

终极ANI-RSS界面定制指南&#xff1a;打造专业级追番体验 【免费下载链接】ani-rss 基于RSS自动追番、订阅、下载、刮削、洗版 项目地址: https://gitcode.com/gh_mirrors/an/ani-rss ANI-RSS作为一款基于RSS的自动追番、订阅、下载工具&#xff0c;为动漫爱好者提供了强…...