`

lifeCycle

    博客分类:
  • rust
 
阅读更多
fn longest<'info>(x: &'info str, y: &'info str) -> &'info str {
    if x.len() > y.len() {
        x
    } else {
        y
    }
}

//传入的和返回的有相同的生命周期,不然调用在{}如果传入的没了,返回的跳出{}还存在就会有问题
// fn longest2<'a>(x: &str, y: &str) -> &'a str {
//     let result = String::from("really long string");
//     result.as_str()
// }

use std::fmt::Display;

fn longest_with_an_announcement<'a, T>(
    x: &'a str,
    y: &'a str,
    ann: T,
) -> &'a str
    where
        T: Display,
{
    println!("Announcement! {}", ann);
    if x.len() > y.len() {
        x
    } else {
        y
    }
}

fn main() {
    let s = longest("aaa","bbbb");
    println!("longest:{}",s);
    let string1 = String::from("long string is long");
    let result;
    {
        let string2 = String::from("xyz");
        result = longest(string1.as_str(), string2.as_str());
        println!("The longest string is {}", result);

        longest_with_an_announcement(string1.as_str(), string2.as_str(),"aaa");
    }
}

longest:bbbb
The longest string is long string is long
Announcement! aaa

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics