首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Rust中将&str转换为~str?

如何在Rust中将&str转换为~str?
EN

Stack Overflow用户
提问于 2013-03-13 15:35:24
回答 2查看 4.1K关注 0票数 19

顺便说一句,这是针对当前的0.6 Rust主干的,不确定确切的提交。

假设我想对一些字符串进行for each,并且我的闭包使用了一个借用的字符串指针参数(&str)。我希望我的闭包将它的参数添加到一个拥有字符串的向量中,~~str将被返回。我对Rust的理解很弱,但我认为字符串是一种特殊情况,你不能用*来引用它们,对吧?如何将字符串从&str转移到接受~str参数的向量的push方法中?

下面是一些不能编译的代码

fn read_all_lines() -> ~[~str] {
    let mut result = ~[];
    let reader = io::stdin();
    let util = @reader as @io::ReaderUtil;
    for util.each_line |line| {
        result.push(line);
    }
    result
}

它不能编译,因为它推断结果的类型是&str,因为这是我推入它的类型。更不用说它的生命周期是错误的,因为我给它添加了一个生命周期较短的变量。

我意识到我可以使用ReaderUtil的read_line()方法,它返回一个~str。但这只是一个例子。

那么,如何从借用的字符串中获取拥有的字符串呢?还是我完全误解了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-21 17:04:32

您应该调用StrSlice特征的方法to_owned,如下所示:

fn read_all_lines() -> ~[~str] {
    let mut result = ~[];
    let reader = io::stdin();
    let util = @reader as @io::ReaderUtil;
    for util.each_line |line| {
        result.push(line.to_owned());
    }
    result
}

StrSlice特征文档在这里:

http://static.rust-lang.org/doc/core/str.html#trait-strslice

票数 11
EN

Stack Overflow用户

发布于 2013-03-13 20:49:26

起初,我认为可以使用copy line从借用的指向字符串的指针创建自己的指针,但这显然是复制了挖掘式指针。

所以我找到了str::from_slice(s: &str) -> ~str。这可能就是您所需要的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15379408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档