官术网_书友最值得收藏!

String slices

String slices can be confusing at first sight. We define a string slice like this:

let homeTeam = "Liverpool"; 

Coming from more dynamic languages, you might think that we are assigning the string Liverpool to the variable binding homeTeam. That's not exactly what happens, however. The homeTeam binding is actually a string slice: a reference to a part of the string that actually resides somewhere else.

The string slice is also not mutable.

The following will not work in Rust:

let homeTeam = "Liverpool"; 
let result = " beat "; 
let awayTeam = "Manchester United"; 
let theString = homeTeam + result + awayTeam; 

The compiler will not allow this, and will give an error as follows:

We cannot concatenate the slice directly, since string slices cannot be mutable. To do that, we need to first convert the string slice into something that is mutable, or build the string with something like the format! macro. Let's try them both.

Like before, the to_owned() method takes the slice the method is attached to, and converts it to a String type:

fn main() { 
    let homeTeam = "Liverpool"; 
    let result = " beat "; 
    let awayTeam = "Manchester United"; 
     
    let fullLine = homeTeam.to_owned() + result + awayTeam; 
     
    println!("{}", fullLine); 
} 

The to_owned() method is only applied to the first slice. This converts the string slice homeTeam into a String, and using the + operator on a String is fine.

When this is built and executed, you will see the following:

主站蜘蛛池模板: 广平县| 达尔| 安岳县| 霍山县| 平舆县| 平乐县| 亚东县| 大关县| 都江堰市| 宝坻区| 胶南市| 汶上县| 分宜县| 广德县| 惠安县| 防城港市| 盐源县| 三亚市| 武强县| 修文县| 德惠市| 若尔盖县| 绥宁县| 长治县| 丰镇市| 延寿县| 荣昌县| 蓬安县| 宝坻区| 阿拉善左旗| 家居| 三门峡市| 茶陵县| 大足县| 黄平县| 泽州县| 乌鲁木齐市| 仙居县| 海口市| 顺义区| 西乌珠穆沁旗|