rust数值运算小栗子:
fn main() {//1.both of the same type: i32let sum = 6 + 10;println!("1.both of the same type: i32 ,value: {}", sum);//2. i32 + u32;let sum = 6i32 + 10u32 as i32;println!("2. i32 + u32 ,value: {}", sum);//3. i8 + u8;let sum = 2i8 as u8 + 3u8;println!("3. i8 + u8 ,value: {}", sum);//4. i8 + i32 ,result as i32 type;let sum = 3i8 as i32 + 666i32;println!("4. i8 + i32 , value: {}", sum);//5. i8 + i32 , result as i8 type;let sum = 3i8 + 666i32 as i8;println!("4. i8 + i32 , value: {}", sum);//6. i32 + f32let sum = 1i32 + 1.0f32 as i32;println!("6. i32 + f32 , value: {}", sum);
}
我是c++程序员,c++的灵活和强大是众所周知的!初上手写rust代码时确实有些抓狂,比如上面简单平常的数值运算,c++默认就帮你自动转换了, 当然是否符合预期需要运行时发现问题后跟踪调试!比如:溢出、截断、环绕、符号位等,这些问题不论是用c++还是用rust编程时都需要认真考虑的!只不过我们习惯了在写代码时的自由发挥无拘无束的感觉,随后运行调试时的煎熬酸爽!
rust选择在代码编写期间发现问题解决问题!反正你要赋值,你要运算,那么你的类型就要明确!不同的类型需要转换为同一个类型,比如用as, 或者自己实现From&Into trait特征,令人感到刻板无情,一根筋!但是确实可以发现问题解决问题!避免日后的煎熬!
你以为类型转换是个简单问题!比如上面及其简单的数值运算代码,稀松平常,没兴趣!?
那么我们需要时不时地回望过去,温故历史,那样会使我们更加清醒和睿智!
rust不是程序员的敌人,严苛的语言规则,固执的编译器,只为我们项目完成后真的可以洒脱离开!你不要以为我在无病呻吟顾影自怜,作为一名c++老菜鸟, 我见识过太多项目中,许多高手各种淫巧奇技,开发效率不可谓不快,代码看着不可谓不神秘潇洒!也看过很多维护者的抓狂!运维者、老板、甲方等的暴怒!呵呵,你也许会骄傲地认为,因为你是菜鸟,我是天才,所以呵呵...
既然是人,那么能力水平就不同,纵然能力水平相同,但作为凡人我们又各有心思习惯,谁能做到上下一心?!再加上项目期限的紧逼,老板和甲方的催促,不断变化增多的需求!不断日夜加班的憔悴!那么你还骄傲的起来吗?!
我的建议,接受rust, 学习rust!不要小看每一个语法点和规则设计,有的时候刻板繁琐的语法和规则也是有意为之。
我自己也是rust初学者, 水平有限,持续学习中,如有谬误希望指正。