如何将 Iterator 作为 Iterator<&str> 传递?

2023-12-30

fn my_print<'a>(args: impl Iterator<Item=&'a str>) {
    for arg in args {
        println!("=> {}", arg);
    }
}

fn main() {
    let vec = vec!["one".to_string(), "two".to_string()];
    my_print(vec.into_iter()); // how to pass vec here?
}

我如何转换Iterator<T> to Iterator<U>并将其传递给另一个函数?


更好的方法是将函数写入:

fn my_print<T: AsRef<str>>(args: impl Iterator<Item = T>) {
    for arg in args {
        println!("=> {}", arg.as_ref());
    }
}

fn main() {
    let vec = vec!["one".to_string(), "two".to_string()];
    my_print(vec.into_iter()); // works!
}

如果您无法更改函数签名,:

fn my_print<'a>(args: impl Iterator<Item = &'a str>) {
    for arg in args {
        println!("=> {}", arg);
    }
}

fn main() {
    let vec = vec!["one".to_string(), "two".to_string()];
    my_print(vec.iter().map(|s| s.as_ref()));
}

请注意,在这种情况下您不能使用into_iter因为没有人会拥有这些琴弦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Iterator 作为 Iterator<&str> 传递? 的相关文章

随机推荐

  • GCC + LD + NDISASM = 大量汇编指令

    我是 C 和 GCC 编译器的新手 试图研究如何通过反汇编生成的二进制文件将 C 编译为机器代码 但编译然后反汇编一个非常简单的函数的结果似乎过于复杂 I have basic c file int my function int a 0x
  • 无法“取消选择”列表视图项目

    我能够使用 setOnItemClickListener 更改单个列表视图项目的背景 view setBackgroundResource R color green 我一次只需要选择一个 因此当单击其他列表项时 我尝试了lv invali
  • 如果输入字段为空,jquery ui datepicker 的值为 1970

    我正在使用 jquery ui 日期选择器来获取 fromDate 和 toDate 以下是起始日期的代码
  • 如何使用clearfsimport将文件导入到空VOB中

    我创建了一个 VOB 和一个加载它的快照视图 VOB 是空的 我想添加一些文件来初始化它 但我想要导入的所有文件都出现错误 这是详细信息 VOB 是通过以下命令创建的 ct mkvob tag vobs sqlite comment tes
  • 如何从 Google Fit REST API(如 Google Fit 应用程序)获取步数?

    我正在开发一个 PHP 应用程序 它与 Google Fit API 配合使用来收集用户的每日步数 我想获取从 2015 年 1 月 15 日 00 00 00 GMT 0700 到 2015 年 1 月 16 日 00 00 00 GMT
  • iOS 自定义表情

    应用程序商店中有一些应用程序允许您使用自定义表情符号 笑脸等 我的问题是 是否可以在手机上拍照 然后将其裁剪 缩小 并将其设置为键盘上的表情符号之一 简而言之 不 您当然可以从相机胶卷中拍摄照片并将其裁剪为表情符号大小 但无法将其连接到键盘
  • QFile:如何有效地读取从 k 到 k+L 的字节

    我可以从 QFile 读取从 k 到 k L 的字节 将第一个整个文件读入 QByteArray if file open QIODevice ReadOnly QByteArray blob file readAll QByteArray
  • 如何在 Pandas 数据帧的每一行上使用 .rolling() ?

    我创建了一个 Pandas 数据框df df head Out 1 A B DateTime 2010 01 01 50 662365 101 035099 2010 01 01 2010 01 02 47 652424 99 274288
  • Docker 中的“sh:1:react-scripts:未找到”

    我有一个 Docker 容器 无法为构建时克隆到容器中的react js 应用程序执行 npm 安装 有人知道如何解决这个问题吗 Error sh 1 react scripts not found npm ERR file sh npm
  • NodeJS 热代码推送

    我一直在尝试找出 Node js 上的 热代码推送 基本上 我的主文件 当您键入时运行node app js 由一些设置 配置和初始化组成 在该文件中 我有一个使用 chokidar 的文件观察器 添加文件后 我只需require文件 如果
  • Qt Creator 编译后不会运行应用程序

    我使用 SVN 将托管在 google code 上的 Qt 项目检出到本地文件夹 当我在 Qt Creator 上打开它时 它成功编译了该项目 但是当它尝试运行编译后的程序时 应用程序输出上出现了一条错误消息 该进程无法启动 怎么了 我通
  • 对 Firestore 文档进行排序

    有什么可能的方法可以根据特定字段值的数字对集合的 Cloud Firestore 文档进行排序 例如在集合中ids有一些文档 每个文档中都有一个名为idNumber 该 idNumber 的值是 0 然后在下一个文档中是 1 然后是 2 等
  • 将用户定义属性添加到域类

    我需要允许用户在系统实体之一中定义一些自定义字段 您有任何建议 模式 插件可以帮助我将此功能添加到我的应用程序中吗 thanks Meni 您可以将 Map 属性添加到域类并在其中存储任意数据 但它相当有限 它将生成一个包含 varchar
  • $window.focus() 不适用于 iOS Safari 中的现有选项卡

    当我打开一个新窗口时var win window open name 然后使用聚焦窗口win focus 这是首次在 iOS Safari 中运行 但是 当使用 window open 通过名称再次引用现有窗口时 我无法在 iOS Safa
  • 如何“完成”新行

    所以今晚我的 c windows 窗体应用程序遇到了一些麻烦 当当前选定的新行仍为其默认值时 是否可以将新行插入到 datagridview 中 或者 如果我想以编程方式更改值 如何模拟用户编辑文本框以完成该行 为了澄清 当一行是新行时 并
  • 如何从状态“False(MissingEndpoints)”启用 kube-system/metrics-server?

    我的指标服务器突然无法工作并得到以下信息 kubectl get apiservices egrep metrics v1beta1 metrics k8s io kube system metrics server False Missi
  • jQuery 类选择器性能(困惑)

    So is table selectable td capable input text 优于 table selectable td input text 换句话说 指定一个类会加速还是减慢选择速度 假设在这种情况下不是绝对需要的 我没有
  • 当我无法设置“DYLD_LIBRARY_PATH”时,如何在 macOS 上便携式安装 ImageMagick?

    我正在为 macOS Mojave 开发一个命令行实用程序 它使用 ImageMagick 来操作图像 我想将它作为一个独立的应用程序进行共享 以便其他人可以开箱即用 而无需安装任何额外的 dylib 或框架 ImageMagick 的 H
  • WPF Expander 在 Canvas 内部时不会向左扩展

    我有一个有 4 列的网格 第一列是一个 ZIndex 为 99 的 Canvas 里面有一个扩展器 展开方向设置为 RIGHT 当我单击标题时 扩展器会扩展至第 2 列的顶部 这正是我想要的 我试图在第 4 列内复制此内容 仅相反方向 以便
  • 如何将 Iterator 作为 Iterator<&str> 传递?

    fn my print lt a gt args impl Iterator