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编码的.
}

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

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

相关文章

VUE3——watch函数

与Vue2.x中watch配置功能一致 两个小“坑”&#xff1a; 监视reactive定义的响应式数据时&#xff1a;oldValue无法正确获取、强制开启了深度监视&#xff08;deep配置失效&#xff09;。监视reactive定义的响应式数据中某个属性时&#xff1a;deep配置有效。 //情况一&#x…

配置wss和隐藏端口号(WebSocket通信)

修改宝塔面板配置文件&#xff1a; 添加这几行代码&#xff1a; location /wss{proxy_pass http://127.0.0.1:23481; # 根据自己的socket端口号修改proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";proxy_s…

小技巧系列——Ubuntu下查看Eigen版本的一种方法(一)

小技巧系列——Ubuntu下查看Eigen版本的一种方法&#xff08;一&#xff09; 说明命令 说明 如何在Ubuntu下查看Eigen版本 命令 pkg-config --modversion eigen3

全网最详细的 Ubuntu 18.04 安装Livox mid-360驱动,测试 fast_lio2

目录 一、前言 二、依赖的环境 三、 安装Livox-SDK2&#xff0c;fast_lio2 和 livox_ros_driver2 (1) 安装Livox-SDK2 (2) 安装 fast_lio2 和 livox_ros_driver2 四、mid-360 设备硬件设置 五、运行设备 六、topic信息查看 一、前言 Livox mid-360需要使用Livox-SDK2…

【OceanBase OBCP题目解析17】关于OceanBase事务引擎一致性特点,描述正确的是

本文为云贝教育郭一军&#xff08;微信&#xff1a;guoyJoe&#xff09;原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。 关于OceanBase事务引擎一致性特点&#xff0c;描述正确的是 &#xff1f; A. 保证…

海外媒体宣发:企业出海最有“范儿”的几大媒体

1. 雅虎财经&#xff08;Yahoo Finance&#xff09; 雅虎&#xff08;英文名称&#xff1a;Yahoo&#xff0c;NASDAQ&#xff1a;YHOO&#xff09;是美国著名的互联网门户网站&#xff0c;也是20世纪末互联网奇迹的创造者之一。其服务包括搜索引擎、电邮、新闻等&#xff0c;业…

【面试经典150 | 动态规划】零钱兑换

文章目录 Tag题目来源解题思路方法一&#xff1a;动态规划 写在最后 Tag 【动态规划】【数组】 题目来源 322. 零钱兑换 解题思路 方法一&#xff1a;动态规划 定义状态 dp[i] 表示凑成总金额的最少硬币个数。 状态转移 从小到大枚举要凑成的金额 i&#xff0c;如果当前…

openssl3.2 - exp - BIO_push()超过2个节点的应用- 以(aes-128-cbc + base64)为例

文章目录 openssl3.2 - exp - BIO_push()超过2个节点的应用- 以(aes-128-cbc base64)为例概述笔记END openssl3.2 - exp - BIO_push()超过2个节点的应用- 以(aes-128-cbc base64)为例 概述 BIO_push()形成了一个链. 理论上, 多个BIO连在一起, 只需要向BIO链头写数据, 然后B…

详解ARP攻击原理、类型、机制、欺骗主机、仿冒网关、泛洪攻击,以及网络攻击中如何快速判断客户端是否存在恶意连接?

详解ARP攻击原理、类型、机制、欺骗主机、仿冒网关、泛洪攻击,以及网络攻击中如何快速判断客户端是否存在恶意连接? ARP攻击(Address Resolution Protocol attack)是一种网络攻击技术,它利用了ARP协议的设计缺陷来实施攻击。ARP是网络协议中用于将网络层的IP地址解析为链路…

舵机烧录

舵机烧录 一、硬件连接1、准备物资2、连接&#xff08;1&#xff09;舵机线一侧连接舵机控制板&#xff0c;另一侧连接舵机&#xff08;2&#xff09;老安卓线一侧连接舵机控制板&#xff0c;一侧连接电脑&#xff08;3&#xff09;接上低压电池 二、软件使用1、打开舵机烧录软…

表格中的状态类型值(tag)

一&#xff1a;数字转换为简单的中文值 ** 不用转换直接用find()方法&#xff1a;在statusList里找&#xff1b; **lastHandleCode是对应的获取到的每行数据的code值&#xff1b; vue: <el-table-column label"执行状态" align"center"><templat…

Vmware虚拟机无法用root直连说明

Vmware虚拟机无法用root直连说明 背景目的SSH服务介绍无法连接检查配置 背景 今天在VM上新装了一套Centos-stream-9系统&#xff0c;网络适配器的连接方式采用的是桥接&#xff0c;安装好虚拟机后&#xff0c;在本地用ssh工具进行远程连接&#xff0c;ip、用户、密码均是成功的…

【Java程序设计】【C00384】基于(JavaWeb)Springboot的民航网上订票系统(有论文)

【C00384】基于&#xff08;JavaWeb&#xff09;Springboot的民航网上订票系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#x…

如何简单在手机上/移动端测试web程序

也许你在搜索到如何在手机上测试web的方法是&#xff1a; Chrome DevTools模拟手机调试 岩鼠平台真机调试 weinre远程调试工具 等等等待 但也许只是需要在手机上简单试用一下我们开发的web 目录 一、前置条件 二、安装Live Server扩展 三、以Live Server运行程序 四、访问…

JS快速排序模板

912. 排序数组 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 示例 1&#xff1a; 输入&#xff1a;nums [5,2,3,1] 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;nums [5,1,1,2,0,0] 输出&#xff1a;[0,0,1,1,2,5] 提示&#xff1a; 1 <…

(vue)el-table表格回显返回的已勾选的数据

(vue)el-table表格编辑时回显返回的已勾选的数据 tableData数据&#xff1a; el-tableref"multipleTable":data"tableData"... >...<el-table-column prop"result" label"相关.." align"center" width"220"…

2022 年甘肃省职业院校技能大赛 高职组 网络系统管理竞赛 网络构建模块试题

2022 年甘肃省职业院校技能大赛 高职组网络系统管理竞赛 网络构建模块试题 目 录 考试说明… 3 任务描述… 3 任务清单… 3 &#xff08;一&#xff09;基础配置… 3 &#xff08;二&#xff09;有线网络配置… 4 &#xff08;三&#xff09;无线网络配置… 6 &#xff08;四&a…

数据拨号失败之CLIENT_END

问题 今天运维同事反馈了一个数据拨号超时的问题&#xff0c;抓了modem日志&#xff0c;需要分析下原因。 分析 首先看到attach过程是成功的&#xff1a; [0xB0ED] OTA LOG 04:05:09.086400 LTE NAS EMM Plain OTA Outgoing Mes…

Halcon与C#联合开发——1.读取图片、图像二值化

在vs中引入halcon控件 修改目标平台为 x64 拖出三个控件 代码展示 using System; using System.Windows.Forms; //引用支持halcon的命名空间 using HalconDotNet;namespace _1.HalconDisplay {public partial class Form1 : Form {// HObject 是Halcon库中表示图像和其他图形…

微信小程序的页面交互练习——实现比较两数大小功能

前提&#xff1a;配置好页面后 一、在wxml里面搭建好框架&#xff1a; <navigation-bar title"Weixin" back"{{false}}" color"black" background"#FFF"></navigation-bar> <scroll-view class"scrollarea"…