当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust once用法及代码示例


本文简要介绍rust语言中 Function std::iter::once 的用法。

用法

pub fn once<T>(value: T) -> Once<T>

创建一个只产生一次元素的迭代器。

这通常用于将单个值调整为其他类型迭代的 chain() 。也许您有一个几乎涵盖所有内容的迭代器,但您需要一个额外的特殊情况。也许您有一个适用于迭代器的函数,但您只需要处理一个值。

例子

基本用法:

use std::iter;

// one is the loneliest number
let mut one = iter::once(1);

assert_eq!(Some(1), one.next());

// just one, that's all we get
assert_eq!(None, one.next());

与另一个迭代器链接在一起。假设我们要遍历 .foo 目录的每个文件,还要遍历配置文件 .foorc

use std::iter;
use std::fs;
use std::path::PathBuf;

let dirs = fs::read_dir(".foo").unwrap();

// we need to convert from an iterator of DirEntry-s to an iterator of
// PathBufs, so we use map
let dirs = dirs.map(|file| file.unwrap().path());

// now, our iterator just for our config file
let config = iter::once(PathBuf::from(".foorc"));

// chain the two iterators together into one big iterator
let files = dirs.chain(config);

// this will give us all of the files in .foo as well as .foorc
for f in files {
    println!("{:?}", f);
}

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::iter::once。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。