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

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:

主站蜘蛛池模板: 广南县| 隆安县| 疏勒县| 乌什县| 水城县| 林芝县| 廊坊市| 左云县| 南汇区| 北宁市| 阿鲁科尔沁旗| 昭苏县| 星座| 葵青区| 黔西| 比如县| 罗平县| 万安县| 滨海县| 九寨沟县| 延长县| 平潭县| 木兰县| 祁连县| 崇仁县| 石首市| 高安市| 惠水县| 明光市| 渭南市| 资溪县| 武定县| 福建省| 南宁市| 凤山市| 凤台县| 马山县| 揭东县| 镇雄县| 英吉沙县| 会泽县|