String 如何在Rust中将字符串转换为向量?

String 如何在Rust中将字符串转换为向量?,string,vector,rust,type-conversion,String,Vector,Rust,Type Conversion,我想知道如何将带样式的字符串转换为向量。假设我有一个值为的字符串: [x,y] -我怎么能把它变成一个向量,它的第一个对象是x,第二个对象是y 谢谢 当然可以,但元素不能是引用。正如@prog fh所提到的,这在rust中是不可能的,因为一旦编译,变量名可能不会被存储,编译器甚至可能在优化过程中删除了一些变量名 但是,您可以使用serde with RON来执行类似于python的ast.literal_eval的操作,这是一种序列化类型,类似于rust数据结构。它并不完美,但它是一种选择。但是

我想知道如何将带样式的字符串转换为向量。假设我有一个值为的字符串:

[x,y]

-我怎么能把它变成一个向量,它的第一个对象是x,第二个对象是y


谢谢

当然可以,但元素不能是引用。正如@prog fh所提到的,这在rust中是不可能的,因为一旦编译,变量名可能不会被存储,编译器甚至可能在优化过程中删除了一些变量名

但是,您可以使用serde with RON来执行类似于python的ast.literal_eval的操作,这是一种序列化类型,类似于rust数据结构。它并不完美,但它是一种选择。但是,它确实需要您知道您试图解析的类型

使用ron::from_str; 让输入=[37.6,24.3,89.023]; 让解析:Vec=from_strinput.unwrap; 另一方面,如果@mcarton是正确的,并且您想要像vec这样的东西![x,y],您可以像这样手动解析它:

fn parseinput:&str->Option{ 让mut part=String::new; 让mut collected=Vec::new; 设mut char_iter=input.chars; 如果char_iter.next!=一些'['{ 一无所获 } 环路{ 匹配字符。下一个{ ']' => { 收集部分; 归还已收集的部分 } ',' | ' ' => { if!part.u为空{ 收集部分; part=String::new; } } x=>part.pushx, } } } 普林顿!{:?},解析[a,b,foo];
或者您也可以使用正则表达式来分解它,但您可以自己研究它是如何工作的。

当然可以,但元素不能是引用。正如@prog fh所提到的,这在rust中是不可能的,因为一旦编译,变量名可能不会被存储,编译器甚至可能在优化过程中删除了一些变量名

但是,您可以使用serde with RON来执行类似于python的ast.literal_eval的操作,这是一种序列化类型,类似于rust数据结构。它并不完美,但它是一种选择。但是,它确实需要您知道您试图解析的类型

使用ron::from_str; 让输入=[37.6,24.3,89.023]; 让解析:Vec=from_strinput.unwrap; 另一方面,如果@mcarton是正确的,并且您想要像vec这样的东西![x,y],您可以像这样手动解析它:

fn parseinput:&str->Option{ 让mut part=String::new; 让mut collected=Vec::new; 设mut char_iter=input.chars; 如果char_iter.next!=一些'['{ 一无所获 } 环路{ 匹配字符。下一个{ ']' => { 收集部分; 归还已收集的部分 } ',' | ' ' => { if!part.u为空{ 收集部分; part=String::new; } } x=>part.pushx, } } } 普林顿!{:?},解析[a,b,foo];
或者您也可以使用正则表达式来分解它,但您可以自己研究它是如何工作的。

恐怕这是不可能的。Rust程序无法内省其绑定以查找名为x和y的绑定。您的问题似乎受到Python中eval的启发,但Rust中没有这样的功能。我想他的意思是他想将其转换为vec!恐怕这是不可能的。Rust程序无法内省其绑定以查找名为x和y的绑定。您的问题似乎受到Python中eval的启发,但Rust中没有这样的功能。我想他的意思是他想将其转换为vec![x,y]