C2Rust工具能够将大多数C模块翻译成语义上等价的rust代码。这些模块将单独编译,以生成兼容的对象文件。支持C99标准。在我们的工具翻译C源代码之前,使用clag对其进行分析和类型检查。
帮助您将符合C99的代码迁移到Rust。它提供:
CtoRust翻译器Rust代码重构工具对照新的Rust代码并交叉检查C代码执行情况的工具架构图如下:
转换示例:
C语言源码:
voidisertio_sort(itcost,it*costp){for(iti=1;i<;i++){itcosttmp=p[i];itj=i;while(j>0&&p[j-1]>tmp){p[j]=p[j-1];j--;}p[j]=tmp;}}转换后的Rust代码:
#![allow(dead_code,mutable_trasmutes,o_camel_case_types,o_sake_case,o_upper_case_globals,uused_mut)]#![feature(libc)]extercratelibc;#[o_magle]pubusafeexter"C"fisertio_sort(:libc::c_it,p:*mutlibc::c_it){letmuti:libc::c_it=1i32;whilei<{lettmp:libc::c_it=*p.offset(iasisize);letmutj:libc::c_it=i;whilej>0i32&&*p.offset((j-1i32)asisize)>tmp{*p.offset(jasisize)=*p.offset((j-1i32)asisize);j-=1}*p.offset(jasisize)=tmp;i+=1};}
评论