如何从向量创建元组?

2024-02-14

下面是一个示例,它分割字符串并解析每个项目,将其放入一个其大小在编译时已知的元组中。

use std::str::FromStr;

fn main() {
    let some_str = "123,321,312";
    let num_pair_str = some_str.split(',').collect::<Vec<&str>>();
    if num_pair_str.len() == 3 {
        let num_pair: (i32, i32, i32) = (
            i32::from_str(num_pair_str[0]).expect("failed to parse number"),
            i32::from_str(num_pair_str[1]).expect("failed to parse number"),
            i32::from_str(num_pair_str[2]).expect("failed to parse number"),
        );
        println!("Tuple {:?}", num_pair);
    }
}

有没有办法避免重复解析数字?

这是 Rust 支持类似 Python 的推导式的示例:

let num_pair: (i32, i32, i32) = (
    i32::from_str(num_pair_str[i]).expect("failed to parse number")
    for i in 0..3
);

是否可以以扩展向量的方式声明元组?


EDIT:一个简单的单行解决方案:收集元组 https://docs.rs/itertools/0.10.1/itertools/trait.Itertools.html#method.collect_tuple流行的itertools crate.

let iter = 1..3;
let (x, y) = iter.collect_tuple().unwrap(); // yeah!

原答案

如果您想要更好的 IDE 类型提示,宏可能不是一个完美的解决方案。这是我的尝试:

fn tuple1<T>(a: &[T]) -> (&T) { (&a[0]) }
fn tuple2<T>(a: &[T]) -> (&T, &T) { (&a[0], &a[1]) }
fn tuple3<T>(a: &[T]) -> (&T, &T, &T) { (&a[0], &a[1], &a[2]) }
fn tuple4<T>(a: &[T]) -> (&T, &T, &T, &T) { (&a[0], &a[1], &a[2], &a[3]) }
fn tuple5<T>(a: &[T]) -> (&T, &T, &T, &T, &T) { (&a[0], &a[1], &a[2], &a[3], &a[4]) }
fn tuple6<T>(a: &[T]) -> (&T, &T, &T, &T, &T, &T) { (&a[0], &a[1], &a[2], &a[3], &a[4], &a[5]) }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从向量创建元组? 的相关文章

随机推荐

  • 在 WordPress 中获取页面(无帖子)的精选图像

    我需要显示所有页面的特色图像 而不是帖子 我有这个代码 img src class header img alt 但这仅显示一张特色图像 太感谢了 您可以简单地使用 WP Query 来获取它 loop new WP Query array
  • Yii2 自定义分页联合查询

    我想在 Yii2 中实现自定义分页 这是我的代码 connection Yii app gt getDb name GET name query SELECT name FROM user WHERE name LIKE name UNIO
  • Python 将十进制转换为十六进制

    我这里有一个函数可以将十进制转换为十六进制 但它以相反的顺序打印它 我该如何解决它 def ChangeHex n if n lt 0 print 0 elif n lt 1 print n else x n 16 if x lt 10 p
  • jQuery:无限滚动和后退按钮

    好吧 我知道这会给每个人带来问题 也给我带来问题 我在客户的网站上使用无限滚动插件 结合同位素插件按顺序加载他们的产品 问题是 因为他们有 1000 种产品 任何浏览该网站然后点击进入产品的人 当他们点击按后退按钮 它们将返回到顶部 或第一
  • 将多个文件导入到 R 中的单个合并数据框中

    我有 8 个 CSV 文件都在同一目录中 需要将它们导入到 R 中的单个数据框中 它们都遵循相同的命名约定 dataUK 1 csv dataUK 2 csv 等 并且具有完全相同的功能列的结构 我已经成功地使用以下方法创建了所有文件名 包
  • VS 2012 中的可变参数模板(Visual C++ 2012 年 11 月 CTP)

    我安装了Visual C 编译器 2012 年 11 月 CTP http www microsoft com en us download details aspx id 35515并创建了一个 C 控制台项目 我把这个写在 templa
  • 单态与单态

    当人们使用单态模式而不是单例来维护全局对象时 会出现什么情况 编辑 我知道什么是单例模式和单态模式 在很多场景中也实现了 Singleton 只是想知道MonoState模式需要实现的场景 案例 例如 我需要在 Windows 窗体应用程序
  • 如何设置 LIBUSB_INCLUDE_DIR

    我正在尝试为arm交叉编译libftdi 当我运行 Cmake 时 我得到 CMake Error The following variables are used in this project but they are set to N
  • 在 Iphone SDK 中显示 GPS 可用性和准确性

    如何编程以在 iPhone 中显示 GPS 可用性和准确度级别 并且它必须擦除标签中先前的纬度 经度信息 iOS sdk 中有一个类叫做 CLLocationManager 浏览 XCode 中的文档或查找一些示例 http mobileo
  • Jetpack Compose:如何以编程方式 onClick 将主题从浅色模式更改为深色模式

    TL DR 更改主题并在单击时在浅色和深色主题之间重新组合应用程序 你好 我有一个有趣的问题 我一直在努力解决 希望得到一些帮助 我正在尝试实现一个设置屏幕 让用户更改应用程序的主题 选择与系统设置匹配的深色 浅色或自动 我已成功设置主题动
  • 将值传递给 onclick [重复]

    这个问题在这里已经有答案了 如果我使用循环创建大量 HTML 元素 例如 for i 1 i lt 100 i var my element document createElement td row appendChild my elem
  • jquery Mobile url 添加 # 标签,该标签会破坏 Internet Explorer 中的表单

    大家好 我的问题是我有一个 jquery 移动网站 其链接与普通网站类似 例如 a href http mysite com login Login a 现在 当他们在 Firefox 等中转到该页面时 它会转到 http mysite c
  • c++: LLDB + Python - 如何在 python 脚本中打印 std::string

    我正在尝试 LLDB python 以便更好地将 json 字符串打印到文件中 对于给定的 std string 变量 称为缓冲区 我在 python 断点脚本中尝试了以下操作 以便漂亮地打印到文件中 全部都不成功 json dump fr
  • 使用 Selenium Webdriver 与 Stripe Card Element iFrame 交互 - Cucumber/Selenium Java

    我有一个表单 我想在 Java 中使用 Cucumber 和 Selenium Webdriver 来自动化 在这个表单中 我们有一个从 Stripe 中使用的卡片元素 我们称之为 div 剩下的由 stripe 完成 我不确定这是否是 i
  • 如何使用我的 flutter API 在表格日历上显示事件

    我有用于显示事件日历的 UI 并且需要显示 API 中的事件 但我不知道该怎么做 我尝试更改 event 上的列表 但没有响应 我需要在日历上显示它 以便我的公司日历可以显示该活动 这是我的 UI 日历 import package int
  • 新的 Firebase Facebook 登录

    我正在尝试使用新的 Firebase 平台登录 Facebook 这是 Facebook 登录的代码 let facebookLogin FBSDKLoginManager facebookLogin logInWithReadPermis
  • Python 文件关键字参数?

    在命令行中 我可以将参数传递给 python 文件 如下所示 python script py arg1 arg2 我可以找回arg1 and arg2 within script py as import sys arg1 sys arg
  • pimpl 使模板编码不那么混乱

    我正在尝试创建一个更清晰的头文件 以供头类的参考 文档使用 同时仍然认识到模板的便利性 所以我有一个快速的 h hpp 文件 mempool h namespace internal template
  • PHP 帖子名称通配符 - $_POST['var_'.*];

    是否可以使用某种通配符来创建以特定字符串开头的 POST 变量 本质上 我试图捕获任何包含 bSortable wildcard 作为名称的 POST bSortable 1 bSortable 2 bSortable 3 我正在为 jqu
  • 如何从向量创建元组?

    下面是一个示例 它分割字符串并解析每个项目 将其放入一个其大小在编译时已知的元组中 use std str FromStr fn main let some str 123 321 312 let num pair str some str