Dzwebs.Net

撰写电脑技术杂文十余年

rust构造类似于python的range序列

Admin | 2024-2-19 16:38:53 | 被阅次数 | 532

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

      如题所示:rust构造类似于python的range序列

      代码如下:

#[derive(Debug)]
struct Range{
    start:f32,
    stop:f32,
    step:f32,
}
impl Range{
    fn new(start:f32,stop:f32,step:f32)->Self{
        Range{start:start,stop:stop,step:step,}
    }
}
impl Iterator for Range{
    type Item = f32;
    fn next(&mut self) ->Option<Self::Item>{
        if self.start < self.stop{
            let r = self.start;
            self.start += self.step;
            Some(r)
        }else{ None }
    }
}
fn main(){
    let r = Range::new(1.0,10.0,3.0);
    println!("新建的结构体:{:?}",r);
    let r = Range{start:1.0,stop:10.0,step:3.0};
    let k: Vec<_> = r.collect();
    println!("使用结构体转成的数组:{:?}",k);
    //rev()为反向排序,rust中,一般无法使用浮点数生成序列,但是可以使用上述的结构体生成浮点数序列
    let a: Vec<_> = (1..=10).rev().collect();
    println!("使用生成器转成的数组:{:?}",a);
}
/*
新建的结构体:Range { start: 1.0, stop: 10.0, step: 3.0 }
使用结构体转成的数组:[1.0, 4.0, 7.0]
使用生成器转成的数组:[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
*/


该杂文来自: 最新技术

上一篇:rust failed to run custom build command for `r

下一篇:rust读json解析错误的解决办法

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计