可以显式在代码中调用panic!宏,程序在执行到该语句时将报错并退出程序,而通过设置RUST_BACKTRACE环境变量,可以在panic!报错时输出当时的程序调用栈,便于debug。
Result是一个枚举类型,其定义如下:
enum Result <T,E>{
Ok(T),
Err(E),
}
其中T、E均为泛型参数,当函数操作成功时,返回Ok(T),失败时返回Err(E)。
Result搭配match可以实现对代码错误情况的处理。
unwrap和expect方法是对于match处理错误的简化,在返回Ok(T)时,unwrap和expect方法不会被触发,而但返回Err(E)时,将会导致程序panic!并可进行简单的输出。
可以将函数返回值设置为Result类型,在出错时将错误抛出,由函数调用者进行错误处理。
可以在函数定义、方法定义、结构体定义、枚举定义时使用泛型,提高代码的利用率,避免为不同类型的变量重复实现相同的代码逻辑。
Trait即为rust中的接口,Trait中可以仅有方法定义,也可实现默认方法。
可以在函数或方法定义中,将参数和返回值声明为实现了指定Trait的类型。
示例:
//定义trait
pub trait Summary{
fn summarize(&self) -> String {
//do something
}
}
// 函数定义中使用trait
pub fn notify(iterm: &impl Summary) -> impl Summary{
//do someting
}
// trait bound
pub fn notify_1<T:Summary>(iterm: &T){
//do something
}
// trait bound 与+
pub fn notify_3<T:Summary+Abc>(iterm: &T){
//do something
}
//trait bound与where
pub fn notify_4<T,U>(t: &T,u: &U) -> i32
where {
T:Summary+Display,
U:Display+Clone,
}
{
//do something
}
rust中的引用都有其生命周期即作用域,使用超过生命周期的引用将会导致编译时报错。
生命周期与泛型
需要为泛型参数添加生命周期注解,才能在函数中返回泛型引用
生命周期的省略
有一套对应的规则,满足该规则,就可以省略生命周期注解:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。