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

网站样式模板下载自动写论文神器app

网站样式模板下载,自动写论文神器app,网络营销方案预算与评估,wordpress视频多集播放✨重磅!盹猫的个人小站正式上线啦~诚邀各位技术大佬前来探秘!✨ 这里有: 硬核技术干货:编程技巧、开发经验、踩坑指南,带你解锁技术新姿势!趣味开发日常:代码背后的脑洞故事、工具测…

✨重磅!盹猫的个人小站正式上线啦~诚邀各位技术大佬前来探秘!✨

这里有:

  • 硬核技术干货:编程技巧、开发经验、踩坑指南,带你解锁技术新姿势!
  • 趣味开发日常:代码背后的脑洞故事、工具测评,让技术圈不再枯燥~
  • 独家资源分享:开源项目、学习资料包,助你打怪升级快人一步!

👉 点击直达→ 盹猫猫的个人小站 👈
🌟 来逛逛吧,说不定能挖到你正在找的技术宝藏哦~

目录

⭐ 前言

⭐ 环境准备

⭐ 代码步骤

🔶 自定义打印

🔶 自定义转换

🔶 疑问解答

📖 总结


欢迎来到 盹猫(>^ω^<)的博客

本篇文章主要介绍了

[📚重学Rust📚之结构体打印和转换]
❤博主广交技术好友,喜欢文章的可以关注一下❤

⭐ 前言

        编写这个系列文章的目的是为了巩固所学的Rust知识,对Rust中庞大的依赖体系进行整理,当然,如果文章内容可以帮助到你,那当然求之不得了😁

记录结构体自定义打印和转换操作

🌹学而时习之,不亦说乎!🌹

⭐ 环境准备

         除了基础的Cargo环境之外,你还需要准备以下环境,如果你没有安装Cargo环境可以通过盹猫脚本库进行Rust环境的快速搭建工作:

[package]
name = "ref_test"
version = "0.1.0"
edition = "2024"[dependencies]

因为主要用到标准库中的依赖,所以不用添加任何其它依赖项.

⭐ 代码步骤

开始之前先声明一个结构体,这里用的是User结构体:

struct User {//姓名name: String,//年龄age: i32,
}
impl User {pub fn new(name: String, age: i32) -> User {User {name: name,age: age,}}
}

通过Impl User 可以为User实现自定义的new方法(构造函数).

🔶 自定义打印

        在Rust中除了可以使用#[derive(Debug)] 标注进行实现快捷打印之外,还可以进行自定义的打印操作(类似于Java中的toString方法),实现的代码如下:

impl Display for User {fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {f.write_str(&format!("{}{}{}", "[", self.name, "]"))}
}

需要为自定义的结构体实现Display这个Trait,通过f.write_str()方法输出需要的自定义的格式,编写测试代码:

 pub fn main(){let user: User = User::new("zhangsan",18);println!("{}", user);
}

上面代码会输出:

[zhangsan]

也就是我们自定义的输出格式,但如果打印时使用{:?} 标记输出,则会调用Debug注解内的输出,输出为:

User { name: "zhangsan", age: 18 }

🔶 自定义转换

      有时我们的输入数据不一定是标准的可转换格式(如json)格式,比如下述格式:

"zhangsan,18"

我们又希望将上面的字符串可以快速转换为我们使用的结构体,那就需要用到自定义的格式转换,需要为结构体实现From<T>这个Trait(这里的T需要根据实际需要转换的值类型选择),代码如下:

impl From<String> for User {fn from(value: String) -> Self {//进行传入值根据,的分割let mut c = value.split(",");User {//分割后的第一位数据name: c.next().unwrap().to_string(),//分割后的第二位数据,并进行异常处理age: match c.next().unwrap().parse() {Ok(t) => t,Err(_e) => 0,},}}
}

这里需要对字符串数据进行分割,并分别取第一位和第二位数据赋值为name和age并进行返回,编写测试代码:

    let c = String::from("zhangsan,18");let user: User = c.into();println!("{:?}", user);

在实现From<T> 后就可以直接对这里的c调用into()方法,将其转换为User类型的结构体了.

🚨注意:这里必须指明要转换为的结构体类型,无法自动判断需要转换为的结构体类型.

🔶 疑问解答

🤔 :如果转换结构体时,比如年龄无法转换为i32类型应该如何操作?

match c.next().unwrap().parse() {Ok(t) => t,Err(_e) => 0,}

📢: 这里使用了match进行选择,当返回值为OK时,即转换成功时返回值,当报错时我们返回个默认值0或进行其它特殊处理,这样即使传入值为"ZHANGSAN,AWD" 转换为结构体时,也不会发生报错.

🤔 :如何将结构体转换为自定义的字符串?
 

let c = format!("{}",user);

可以通过format宏函数直接将结构体转换为字符串,同样会调用Display中的方法转换.

📖 总结

        在Rust中我们可以使用实现Display Trait实现自定义的格式打印,通过From<T> Trait进行自定义数据格式的转换操作.

上面就是所有配置信息了,如果内容对你有帮助,麻烦留一个赞👍和收藏⭐支持一下!


如果你对区块链内容感兴趣可以查看我的专栏:小试牛刀-区块链

感谢您的关注和收藏!!!!!!

http://www.dtcms.com/a/604566.html

相关文章:

  • 国企网站建设要求包装设计公司 山东
  • fusion做电影网站卡死襄樊市网站建设公司
  • 贵州省住房和城乡建设网站淘宝官方网站登录注册
  • 做商城网站的流程介绍wordpress添加单页模板
  • 怎么做网站代理商创意广告牌设计图片大全
  • 搬瓦工怎么做网站百度优化大师
  • 南昌微信网站建设数据中台系统
  • 太原电商网站设计百度云虚拟主机wordpress伪静态
  • 懒人手机网站模板张掖网站建设
  • 周口市做网站郑州seo技术代理
  • 搜索广告进一步优化营商环境
  • 内江市规划建设教育培训中心网站那个网站的域名便宜
  • 西安网站推广排名互联网电商
  • 大型网站开发用什么技术东莞整站优化
  • 优化推广网站排名建设网站投标标书范本
  • 网站平台怎么做的好处公司官方网站建设申请
  • 网站开发与运营wordpress误删插件
  • 北京北京网站建设建立旅游公司网站多钱
  • 说明网站建设岗位工作职责新乡百度网站推广工具
  • 企业网站建设的类型主要有赣州小程序开发公司
  • 绿色食品网站模板有哪些网络推广渠道
  • 网站建设方案ppt模板大连三大网络推广网站
  • asp.net程序做的网站安全吗6动力论坛源码网站后台地址是什么
  • 营销型网站建设范文怎么查那些人输入做网站
  • 流行的网站开发框架wordpress 'wp-login.php'安全绕过漏洞
  • 网站开发中数据库的设计原则公司电商网站建设方案
  • 怎样做废旧网站韶关新闻最新消息
  • 用什么做asp网站二级建造师证书查询入口
  • 卖环保设备做哪个网站好教育网站建设解决方案
  • 用阿里云和大淘客做网站上海嘉定区网站建设