当前位置: 首页 > news >正文

邹平县建设局网站劳务外包公司

邹平县建设局网站,劳务外包公司,威海网站建设公司哪家好,苏州市网站建设一、mod.rs和lib.rs mod.rs往往是把同一目录下的n个rs文件综合在一起的有效方式#xff1b; lib.rs是一个库或子库层次综合在一起的有效方式#xff1b; 下面举个实例来说明。生成一个rusttoc本地库#xff08;由cargo new rusttoc --lib所生成#xff09;#xff0c;目录…一、mod.rs和lib.rs mod.rs往往是把同一目录下的n个rs文件综合在一起的有效方式 lib.rs是一个库或子库层次综合在一起的有效方式 下面举个实例来说明。生成一个rusttoc本地库由cargo new rusttoc --lib所生成目录结构如下 songroomstaff-NB-146:~/myffi/rusttoc/src$ ls -R .: bar lib.rs./bar: data.rs ffi.rs mod.rs其中data.rs文件内容如下 #[derive(Debug)] pub struct Tick; pub trait GetBar{fn get_bar(self)-VecBar; } #[derive(Debug)] pub struct Bar{open:f64,close:f64,min:f64,max:f64, } impl Bar{pub fn new() -Self{Bar { open: 0.0, close: 0.0, min: 0.0, max: 0.0 }} } 其中ffi.rs文件内容如下 use std::os::raw::{c_int,c_double}; extern C{fn abs(num:c_int) -c_int;fn sqrt(x:c_double) -c_double; } #[no_mangle] pub extern C fn rfn_for_c(){println!(call from rust fn abs :{},unsafe{abs(-6)});println!(call from rust fn sqrt :{},unsafe{sqrt(36.0)}); }此外在上面rusttoc库中在src目录下除了有lib.rs文件还有一个bar文件夹在这个文件夹下还有3个.rs文件其中包括一个mod.rs文件。 很显然mod.rs是把data.rs和ffi.rs综合在一起对外开放的文件。 而lib.rs是在rusttoc这个层次综合起来的一个对外开放的文件。 当然如果一个库中包含若干个子库那也会存在多个不同层次的lib.rs的文件。 二、use来管理库内容的对外开放 在每层mod.rs和lib.rs文件中要通过use来约束对外开放的程度和范围。 mod.rs文件 pub mod ffi; pub mod data; pub use ffi::rfn_for_c; pub use data::{Bar,GetBar};//这里设置Tick不暴露lib.rs文件 pub mod bar; pub use bar::*;在mod.rs中通过pub use来约束ffi.rs和data.rs在此库对外开放或暴露的范围在这里为rfn_for_c函数以及Bar,以及GetBar。而没有进来的Tick则表明不对外开放暴露。 在lib.rs层次再次明确对外开放的层次使用use表统一表明各个mod.rs或子lib.rs的统一对外开放。 如果没有use安排以上均会处于关闭状态均无法以本地库或外地库的方式来调用。当然在use前还要声明一下各mod。 三、另外一种方式include 除了mod.rs,lib.rs之外还有一种特别的导入形式即include。它可以把不同形式文件的内容导入到当到的工作空间。 下面在test文件夹下放了两个不同后缀的文件。 songroomstaff-NB-146:~/myffi/test$ ls -R .: bind.rs const.txtbind.rs #[derive(Debug)] struct Student{name : String,age:i32, }const.txt const MIN_VALUE:f64 30000.0_f64;四、调用库和include导入 另一个rust 二进制工程文件中有main.rs如下 include!(../../test/bind.rs); include!(../../test/const.txt); pub use rusttoc::*; struct Strategy; //实现本地库中的trait impl GetBar for Strategy{fn get_bar(self)-VecBar{vec![Bar::new()]} }fn main() {let student Student{name: wowotuo.to_string(),age:18};//let tick Tick;let bar Bar::new();let strategy Strategy;println!(bar:{:?},bar);println!(strategy -get_bar:{:?},strategy.get_bar());//调用trait//let tick Tick; //因为mod.rs中没有开放Tick的访问权限故不能访问//println!(tick:{:?},tick);println!(student :{:?},student);rfn_for_c();println!(const :{:?},MIN_VALUE);println!(Hello, world!); }另外在这个工程下cargo.toml文件应加下如下部分表明需要导入本地库并指明相应的路径 [dependencies.rusttoc] path ../rusttoc #库的位置这样就是main.rs中导入了rusttoc库以及include了两个文件进来了。 songroomstaff-NB-146:~/myffi/work/src$ cargo run --releaseCompiling work v0.1.0 (/home/songroom/myffi/work)Finished release [optimized] target(s) in 1.68sRunning /home/songroom/myffi/work/target/release/work bar:Bar { open: 0.0, close: 0.0, min: 0.0, max: 0.0 } strategy -get_bar:[Bar { open: 0.0, close: 0.0, min: 0.0, max: 0.0 }] student :Student { name: wowotuo, age: 18 } call from rust fn abs :6 call from rust fn sqrt :6 const :30000.0 Hello, world!上面分别实现本地库中trait,调用了const,相关函数和struct等。
http://www.w-s-a.com/news/436780/

相关文章:

  • py网站开发wordpress 公司网站 模板 下载
  • 长春城乡建设部网站首页英文网站推广服务
  • wordpress实训上海整站seo
  • 福建自己建设网站义乌市企推网络科技有限公司
  • 宁波优化网站哪家好织梦网站地图怎么做
  • 怎么在自己的网站加关键词烟台企业网站建设
  • 中山网站建设界面设计职业技能等级证书
  • 做网站首页多少钱免费版企业邮箱注册
  • ppp模式在网站建设的南昌专业做网站公司哪家好
  • 泰安网站建设制作电话号码百度sem竞价托管公司
  • 苏网站建设网页设计和网页美工
  • 跨境电商平台网站广州地铁站路线图
  • 吉林省交通建设集团有限公司网站企业网站推广的策略有哪些
  • 网站内链怎么做更好郑州网站建设哪家便宜
  • 建设大型购物网站运城哪里做网站
  • php企业网站通讯录管理系统做网站在线支付系统多少钱?
  • 怎么区分用vs和dw做的网站贝贝网网站开发背景
  • 无锡网站建设制作建设信息网查询
  • 彩票系统网站开发建设人力资源网官网
  • 有专门下载地图做方案的网站吗网站建设平台计划书
  • 网站闭站保护10个著名摄影网站
  • 安徽省建设工程信息网官网首页网站关键词排名优化工具
  • 深圳网站建设 百业网站专题教程
  • 公司seo是指什么意思如何来做网站优化
  • 化妆品网站建设平台的分析湖南网站搜索排名优化电话
  • 织梦网站修改教程视频教程管理类网站开发价格
  • 如何让新网站快速收录企业建站的作用是什么
  • 在线制作简历的网站做的最好的微电影网站
  • h5制作的网站网络游戏投诉平台
  • 做外贸网站好还是内贸网站好珠海新盈科技有限公 网站建设