Vector 如何将整数向量连接成单个整数?

Vector 如何将整数向量连接成单个整数?,vector,rust,Vector,Rust,我试图将一个向量的所有内容连接成一个数字。这就像是[1,2,4]>124。以下是我现在拥有的: fn sumVector(vec: &Vec<u32>) -> u32 { return vec.to_owned().concat(); } fn sumVector(vec:&vec)->u32{ 将向量返回到_owned().concat(); } 这是错误的失败 error[E0599]:在当前作用域中找不到类型为'std::vec::vec'的名为'co

我试图将一个向量的所有内容连接成一个数字。这就像是
[1,2,4]>124
。以下是我现在拥有的:

fn sumVector(vec: &Vec<u32>) -> u32 {
    return vec.to_owned().concat();
}
fn sumVector(vec:&vec)->u32{
将向量返回到_owned().concat();
}
这是错误的失败

error[E0599]:在当前作用域中找不到类型为'std::vec::vec'的名为'concat'的方法
-->src/lib.rs:2:27
|
2 |将向量返回到_owned().concat();
|^^^^^^在“std::vec::vec”中找不到方法`

正如Stargateur在评论中所说,您可以:

fn concat(vec: &[u32]) -> u32 {
    vec.iter().fold(0, |acc, elem| acc * 10 + elem)
}
您也可以使用命令式风格编写相同的函数:

fn concat(vec: &[u32]) -> u32 {
    let mut acc = 0;
    for elem in vec {
        acc *= 10;
        acc += elem;
    }
    acc
}

正如Stargateur在评论中所说,您可以:

fn concat(vec: &[u32]) -> u32 {
    vec.iter().fold(0, |acc, elem| acc * 10 + elem)
}
您也可以使用命令式风格编写相同的函数:

fn concat(vec: &[u32]) -> u32 {
    let mut acc = 0;
    for elem in vec {
        acc *= 10;
        acc += elem;
    }
    acc
}
如果输入向量包含一位数整数,则可以跟随

如果向量包含多位数整数,则函数可能不会返回预期值。下面的
concat\u new
函数处理这种情况

fn main() {
    let a = vec![10_i32, 20, 300];

    println!("{:?}", concat_new(&a));
    println!("{:?}", concat(&a));   
}

fn concat_new(vec: &[i32]) -> i32 {
    let t = vec.iter().fold("".to_string(), |acc, x| acc + &x.to_string());
    t.parse::<i32>().unwrap()
}

fn concat(vec: &[i32]) -> i32 {
    vec.iter().fold(0, |acc, elem| acc * 10 + elem)
}
fn main(){
设a=vec![10_i32,20300];
println!(“{:?}”,concat_new(&a));
println!(“{:?}”,concat(&a));
}
fn concat_new(vec:&[i32])->i32{
设t=vec.iter().fold(“.to_string(),|acc,x|acc+&x.to_string());
t、 解析::()。展开()
}
fn concat(vec:&[i32])->i32{
向量iter()折叠(0,| acc,elem | acc*10+elem)
}
如果输入向量包含一位数整数,则可以跟随

如果向量包含多位数整数,则函数可能不会返回预期值。下面的
concat\u new
函数处理这种情况

fn main() {
    let a = vec![10_i32, 20, 300];

    println!("{:?}", concat_new(&a));
    println!("{:?}", concat(&a));   
}

fn concat_new(vec: &[i32]) -> i32 {
    let t = vec.iter().fold("".to_string(), |acc, x| acc + &x.to_string());
    t.parse::<i32>().unwrap()
}

fn concat(vec: &[i32]) -> i32 {
    vec.iter().fold(0, |acc, elem| acc * 10 + elem)
}
fn main(){
设a=vec![10_i32,20300];
println!(“{:?}”,concat_new(&a));
println!(“{:?}”,concat(&a));
}
fn concat_new(vec:&[i32])->i32{
设t=vec.iter().fold(“.to_string(),|acc,x|acc+&x.to_string());
t、 解析::()。展开()
}
fn concat(vec:&[i32])->i32{
向量iter()折叠(0,| acc,elem | acc*10+elem)
}

应该做什么
vec![9,9,…,9,9]
导致?将此函数命名为sum会产生误导。顺便说一下,惯用的Rust使用
snake\u case
表示变量、方法、宏、字段和模块<代码>大写用于类型和枚举变量;对于静力学和常数,
SNAKE\u CASE
?什么应该
vec![9,9,…,9,9]
导致?将此函数命名为sum会产生误导。顺便说一下,惯用的Rust使用
snake\u case
表示变量、方法、宏、字段和模块<代码>大写用于类型和枚举变量;对于静力学和常数,
SNAKE\u CASE
?这是一种非常低效的方法,甚至忽略了它最终是一个字符串@谢普马斯特,谢谢你的链接。但是,我只是强调了多位数整数不起作用的情况。这是一种非常低效的方法,甚至忽略了它最终是一个字符串@谢普马斯特,谢谢你的链接。但是,我只是强调了多位数整数不起作用的情况。