Rust问题整理

| | 符号

//||{} 类似匿名函数...

|x|{
 printl!(x);
}


rust并发库三方的

https://blog.csdn.net/guyu2019/article/details/124230099
文章其中有个库的用法 目前rust已经有了?不然为毛,我都没引入三方库 就可以这样写?
类似下面这样

  //大循环......
   pub fn backLoop(&self) {

    let t = thread::scope(|s| {
        s.spawn(|| {
            while true {
                println!("{}","线程输出看看");
                std::thread::sleep(std::time::Duration::from_secs(5));
                let _find_data = self.unitMap.values().filter(|e|{
                    return e.name=="逍遥子";
                });
            }
           
        });

    });

1.63已经内置了 (https://www.oschina.net/news/200504/rust-1-63-scoped-thread)

vec存储 接口

//Area为trait(接口)
let mut sharps: Vec<&dyn Area> = vec![];
let mut sharps: Vec<Box<dyn Area>> = vec![];

嗯?一个vec中存的都是接口对象,如何取出来修改

你会发现在rust中 可变引用 不可变引用,不能同时使用,但是你操作的又是一个vec...
你会发现,你看着数据就在vec里面 取出来修改无能为力...
这个佬比我说的更清楚...
https://www.jianshu.com/p/fa2b5a594305

所以总结了下面的用法,下面的代码没有问题,但...仅能单线程,谢特

   let mut verNewData: Vec<Box<dyn IBaseObject>> = vec![];

    verNewData.push(Box::new(Hero {
        nickName: "张三丰".to_string(),
        attack: 100,
        def: 80,
        hp: 1000,
    }));

    verNewData.push(Box::new(Role {
        nickName: "逍遥子".to_string(),
        attack: 100,
        def: 80,
        hp: 1000,
    }));
    //第一种
    if let Some((first, elements)) = verNewData.split_first_mut() {
        first.attack(elements[0].as_mut());
    }
    //第二种
    if let [first, rest @ ..] = &mut verNewData[..] {
        first.attack(rest[0].as_mut());
   }

  //第三种
  let mut v = vec![1, 2, 3];
  let (a, b) = v.split_at_mut(1);   // Returns (&mut [1], &mut [2, 3])
  change(&mut a[0], &mut b[0]); 

Rust:在vector中存储不同类型的数据

Rust语言中的vector只能存放相同类型的数据,但是Enum的存在提供了一种在vector中存放不同类型数据的方式!
除了Enum trait也是可以的,不过实现起来就。。。。

enum SpreadsheetCell {
     Int(i32),
     Float(f64),
     Text(String),
}
let row = vec![
     SpreadsheetCell::Int(3),
     SpreadsheetCell::Text(String::from("blue")),
     SpreadsheetCell::Float(10.12),
];
即使用enum包裹不同的类型,然后在vector中使用。

考虑下ECS模型

https://zhuanlan.zhihu.com/p/44657202

像java stream 一样处理rust中的数据 iter用法 迭代器用法

https://zhuanlan.zhihu.com/p/346583098
https://zhuanlan.zhihu.com/p/409309580

rust中有可变迭代器和不可变迭代器,要注意!&T不可变不能转成可变,只能用可变迭代器

Rust结构体关联函数 有点类似类的静态方法

https://www.cnblogs.com/yuyoubei/p/15858259.html

项目结构 模块引入等相关问题

https://zhuanlan.zhihu.com/p/546927569

Rust:mod、crate、super、self、pub use等模块系统用法梳理

https://blog.csdn.net/wowotuo/article/details/107591501

Rust中使用JSON

https://zhuanlan.zhihu.com/p/550958740

这是哪个大佬,做了很多实践和总结

https://www.cnblogs.com/jiangbo4444/category/2071807.html?page=1

生命周期标注和泛型的问题

类型转换

https://blog.csdn.net/cacique111/article/details/126335759

Rust:r#“ “# 的用法

https://blog.csdn.net/quicmous/article/details/120800460

rust的println!函数的各种用法

https://blog.csdn.net/lizhe_dashuju/article/details/108108167

strutc<'a,T:'a> 这种问题

https://www.shuzhiduo.com/A/RnJW3mZrJq/

很强大 对每个实现Write的类型,在实现trait特型WriteHtml

https://www.jianshu.com/p/4057916b3f03

组合器、迭代器、以及线程池Arc的介绍

https://blog.csdn.net/quicmous/category_9714496.html

中文文档

https://minstrel1977.gitee.io/rust-reference/翻译说明.html

社区文档

https://github.com/rust-boom/rust-boom

多线程编程的秘密:Sync, Send, and 'Static

一些练手的小项目

https://rust-unofficial.github.io/too-many-lists/fourth-final.html

如果你对rust中的抽象设计迷糊,可以看看这个C++工程师的Rust迁移之路(1)- 起步

https://zhuanlan.zhihu.com/p/75385189

写的比较全的Sized,unSized,trait

?Sized什么用

clion 调试rust报错 GNU debugger cannot be used with MSVC Rust toolchain

rustup toolchain install stable-x86_64-pc-windows-gnu

rustup default stable-x86_64-pc-windows-gnu

如果和我一样觉的 调试卡的话 重新设置回来即可

rustup default stable
posted @ 2022-09-28 21:01  方东信  阅读(136)  评论(0编辑  收藏  举报