Rust在?- same_position(L,[a,a,c],3,a).
false.
上以更有意义的方式重新排序序列的惯用方式是什么?我有一组从数据库返回的值,并通过以下方式处理它们:
as_ref.unwrap()
也许我可以使用更高级别的功能进行迭代?
答案 0 :(得分:4)
如果您不想使用此样板,可以使用try运算符(?
)添加更多样板以使其看不到。请参阅此概念证明:
#![feature(try_trait)]
use std::fmt;
use std::error::Error;
#[derive(Debug)]
struct MyError;
impl Error for MyError {
//
}
impl fmt::Display for MyError {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
write!(f, "MyError")
}
}
impl From<std::option::NoneError> for MyError {
fn from(_: std::option::NoneError) -> MyError {
MyError
}
}
impl<'a> From<&'a std::io::Error> for MyError {
fn from(_: &'a std::io::Error) -> MyError {
MyError
}
}
fn foo(i: &Result<Option<i32>, std::io::Error /* for example */>) -> Result<&i32, MyError> {
Ok(i.as_ref()?.as_ref()?)
}
很遗憾,我认为您无法删除as_ref
通话。