首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

str 简明指南

简明指南

对于绝大对数读者来说,在 Rust 语言中想使用好 类型并非易事。使用 如同吃榴莲——“闻着臭,吃着香”。当然了吃相不好的话会被当成吃屎,这样做就得不偿失了。根据最近在推特上的一项调查当一个函数需要一个字符串的时候大约有73%的程序员会选择明确的 或 类型,也就是说如果您只会用 看起来可不那么精明。当然这并不是说不能用 ,在某些场景下这是好的。不过您不能只会这一种方法来处理字符串。那么这篇指南就带领您了解如何优雅的吃屎。诶,不对。是优雅的吃榴莲。诶,好像还不对。是优雅的使用 类型。好了,这回对了。为了方便阐述这个问题我们假设我们有个字符串绑定到了标识符 上,这里的 译为“狗子”。

Chico 实际上是西语里面的小伙子的意思,这里“狗子”只是比较本土化的叫法

类型放在什么位置

譬如说您一上来就让“狗子”绑定一句话,我们可以理解为狗子想说的话:

这里这句 编译后会被写入二进制文件,也就是 这个生命周期参数所表达的。如果我们不省略类型及生命周期的话,我们应该这样写:

这时候您可能会有一个疑问了,那么如果所有的 类型实际上都是被写入二进制文件的话,那么我还搞什么生命周期呢?因为显然不是这样的,并非所有的 类型最终的归宿都是二进制文件。譬如说您从一个 里获得的:

您会发现这样一个程序就动不了。为什么呢,因为生命周期太短。到这里我们解答了 类型的最典型的疑问,这个类型到底在哪儿?用双引号包裹的 会被编译到二进制文件当中,如果您用过 wasm 会更清楚这一点。这种字符串会在程序运行时被加载到内容,除此之外的 您不太需要了解它在内存中的位置。当然您如果想要专门探究这个问题可以通过 来进一步了解。这并不是这篇指南的重点,不再赘余。此外 类型意味着这个字符串从程序开始到结束一直在内存中,也就是您一直可以访问到它,而不用担心作用域的问题。

和 如何存在内存中

C 语言的字符串似乎让大家吃了不少亏。所以在 Rust 中的 和 类型都不是以 结尾的。而是以字符串内容和字符串长度的形式存放在内存中的。显然可以通过字符串长度这个字段来控制字符串内容。也就不需要以 结尾了。您如果和 C 语言进行交互的时候还需要特别注意。如有需要请自行了解 FFI 相关内容。

我怎么让函数返回

简单来说您可以加上 的生命周期参数:

不过笔者猜绝大多数读者并不需要这样写,因为这样写的应用场景少之又少。那么这里我们给出两种典型的返回 类型的例子,由 类型参数返回:

由 类型参数返回:

那么能不能做到类似 来进行字符串连接呢?答案是否定的。因为没人知道要把连接好的字符串放在什么位置。如果需要类似的功能请用 宏或把第一个 转换成 类型的方法代替。不过话又说回来,这件事儿实际上并不是完全不能模拟的。只不过和已经讲解的部分类似,我们这里不在赘余。笔者认为您不需要单独学习如何传入 ,因为可以根据需要把它转换成 类型处理。

双引号前的 和 是什么意思

简单说 会把字符串转换成一个流,也就是 类型。使用 可以达到同样的目的; 会禁止转义。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180515G19W1E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券