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
生命周期标注和泛型的问题
- 'a 不会改变引用生命的长短,而只是提醒编译器需要关注那些引用的生命
https://blog.csdn.net/u012067469/article/details/107587786
https://www.cnblogs.com/delayer/articles/14986086.html
https://segmentfault.com/a/1190000041851772?sort=votes
类型转换
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://zhuanlan.zhihu.com/p/362285521
一些练手的小项目
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
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。