首页 > 其他分享 >[Rust] .into()

[Rust] .into()

时间:2024-03-01 16:04:51浏览次数:11  
标签:name text into nametag type Rust String

pub fn generate_nametag_text(name: String) -> Result<String, String> {
    if name.is_empty() {
        // Empty names aren't allowed.
        Err(String::from("`name` was empty; it must be nonempty."))
    } else {
        Ok(format!("Hi! My name is {}", name))
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn generates_nametag_text_for_a_nonempty_name() {
        assert_eq!(
            generate_nametag_text("Beyoncé".into()),
            Ok("Hi! My name is Beyoncé".into())
        );
    }

    #[test]
    fn explains_why_generating_nametag_text_fails() {
        assert_eq!(
            generate_nametag_text("".into()),
            // Don't change this line
            Err("`name` was empty; it must be nonempty.".into())
        );
    }
}

The .into()method in rust is used to convert one type into another. Here .into() is used to convert a string literal (which has the type &str) into a String type.

This is necessary due to when you call generate_nametag_text("Beyoncé".into()), "Beyoncé" is a string literal of type &str. Using .into() here converts it into a String.

In Rust, string literals are of type &str, which are borrowed references to a string. The String type, on the other hand, is an owned, growable string. The generate_nametag_text function expects an argument of type String, not &str.

标签:name,text,into,nametag,type,Rust,String
From: https://www.cnblogs.com/Answer1215/p/18047266

相关文章

  • 写给rust初学者的教程(一):枚举、特征、实现、模式匹配
    这系列RUST教程一共三篇。这是第一篇,介绍RUST语言的入门概念,主要有enum\trait\impl\match等语言层面的东西。安装好你的rust开发环境,用cargo创建一个空项目,咱们直接上代码。懵逼的同僚可以参考我8年前的rust文章:https://www.iteye.com/blog/somefuture-2275494,虽然8年了,然并不......
  • Rust的Display和ToString:将对象转换为字符串
    在写代码的时候,我们经常需要将对象输出到屏幕上,或者转换为字符串;在Python中,我们可以为类型定义魔法函数__str__,print和str()都会调用它;在C++中,我们可以为对象重载ostream&operator<<(ostream&os)函数,使用ostringstream、fstream和cout的时候会调用它。在Rust中该实现什么,想必大......
  • Rust的From和Into特征:可能是最常用的转换类特征
    说到From和Into,以及从他们中衍生出的TryFrom和TryInto,想必大家都不会陌生。它们不像Borrow、AsRef、ToOwned这些默默工作在泛型里的特征,是绝大多数Rust开发者每天都会使用到的东西。今天我们就来加深一下对这四个特征的了解吧~From和Into如果说AsRef和AsMut的功能是做“引用到引......
  • Rust 交叉编译 macOS 为 Linux 和 Windows
    目录前言环境案例macOS编译为Linux和Windows可用二进制程序编译为Linux平台编译为Windows平台最后前言鉴于rust中文资料较少,遇到问题的解决方案更少。这里记录遇到的一些问题。Rust支持交叉编译,可以在macOS平台编译出Linux或者Windows可运行的程序,或者在Lin......
  • 抖音技术分享:飞鸽IM桌面端基于Rust语言进行重构的技术选型和实践总结
    本文由ELab团队公众号授权发布,原题《Rust语言在IM客户端的实践》,来自抖音电商前端团队的分享,本文有修订和改动。1、引言本文将介绍飞鸽IM前端团队如何结合Rust对飞鸽客户端接待能力进行的技术提升,一步步从概念验证、路径分解到分工开发,再到最后上线收益论证,并分享了其中遇到的......
  • rust与python/c++语法区别
    if/matchpubfnanimal_habitat(animal:&str)->&'staticstr{letid=ifanimal=="crab"{//id等于(或拥有)了一个匿名函数的返回值1}elseifanimal=="gopher"{2}elseifanimal=="snake"......
  • 【rust】《 Rust安装并配置cargo国内源(提供rust编译器) 》
    下载Rust安装程序官网地址:https://www.rust-lang.org/tools/installWindow直接点击DownloadRustup-init.exe就可以下载运行程序。运行安装程序双击下载的rustup-init.exe程序,此时会弹出命令窗口命令窗口内输入1  ;1表示默认形式安装,Rust的环境变量会自动添加到系统......
  • CF1209G2 Into Blocks (hard version) 题解
    Description给你\(n\),\(q\),\(n\)表示序列长度,\(q\)表示操作次数。我们需要达成这么一个目标状态:如果存在\(x\)这个元素,那么必须满足所有\(x\)元素都必须在序列中连续。然后你可以进行这么一种操作,将所有的\(x\)元素的变为任意你指定的\(y\)元素,并且花费\(cnt[x......
  • Rust的Cow类型有什么用?详解Cow及其用途
    Rust的智能指针有哪些?大多数人都能马上答出Box<T>、Rc<T>和Arc<T>、Ref<T>和在异步编程中很常见的Pin<P>等等。不过,有一个可能经常被大多数人遗忘的类型,它功能强大,利用好了可以节省很多复制开销;它就是这篇文章的主角:Cow<B>。什么是COW(Copy-On-Write)?在开始之前,有必要先介绍一下CO......
  • Rust的ToOwned特征:泛型版的Clone
    std::borrow::ToOwned是Rust标准库中的一个特征,用于从借用的数据中创建一个具有所有权的副本。它的作用和Clone是一样的,但是相比Clone,它支持泛型;也就是说我们可以将一个类型T“Clone”为另一个类型U。这对处理一些特殊的类型来说很有用。ToOwned的签名ToOwned提供了两个方法,其中......