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

网站建设实训报告doc完整的社群营销方案

网站建设实训报告doc,完整的社群营销方案,成都网站建设推荐,做h5的网站的区别原文 为了与其他语言通信,Rust提供了(FFI)外部函数接口.FFI是Rust和C间的函数调用,与C函数调用有相同性能的零成本抽象. FFI绑定还可利用(如所有权和借用)语言功能来提供强制指针和其他资源协议的安全接口. Rust与C对话 从Rust调用C代码的简单示例开始.如下为C代码: int do…

原文
为了与其他语言通信,Rust提供了(FFI)外部函数接口.FFIRustC间的函数调用,与C函数调用有相同性能的零成本抽象.

FFI绑定还可利用(如所有权和借用)语言功能来提供强制指针和其他资源协议的安全接口.

Rust与C对话

Rust调用C代码的简单示例开始.如下为C代码:

int double_input(int input) {return input * 2;
}

要从Rust调用它,可如下编写程序:

extern crate libc;
//外部仓库.
extern {fn double_input(input: libc::c_int) -> libc::c_int;//写签名.
}
fn main() {let input = 4;let output = unsafe { double_input(input) };//不安全中调用.println!("{} * 2 = {}", input, output);
}

就这样!在源码级,除了声明签名外,就行了.
但有些细节:
首先,看到extern crate libc.此libc仓库在与C语言通信时,为FFI绑定提供了许多有用的类型定义,且确保C和Rust跨语言边界类型上保持一致.
再看:

extern {fn double_input(input: libc::c_int) -> libc::c_int;
}

Rust中,这是外部可用函数的声明.可按C头文件对待.这里编译器要了解函数的输入和输出,可在上面看到,这与C中定义匹配.
接着,程序主体:

fn main() {let input = 4;let output = unsafe { double_input(input) };println!("{} * 2 = {}", input, output);
}

在此看到了RustFFI关键方面,即不安全块.编译器对double_input的实现一无所知,因此它必须假设调用外部函数时,都可能内存不安全.
再看看是否可验证零成本.
为了了解Rust做了什么,直接进入上述main函数对double_input调用的汇编代码:

mov    $0x4,%edi
callq  3bc30 <double_input>

如前,就是这样!在此可见,把参数移动到位后,从Rust调用C函数恰好涉及一个调用指令,这与C语言中的成本完全相同.

安全抽象

Rust中绑定C库时,不仅是零成本,还可比C更安全!
如,考虑解析tarballC库.该库公开取读tarball每个文件内容函数,可能如下:

 //在`tarball`中,在给定`索引`处,取文件的数据,如果不存在`该文件`,则返回`NULL`.如果成功,用文件大小`填充`,`"size"`指针.
const char *tarball_file_data(tarball_t *tarball, unsigned index, size_t *size);

但是,此函数假定返回的char*指针生命期不超过输入的tarball.绑定到Rust中时,此API可能如下:

pub struct Tarball { raw: *mut tarball_t }
impl Tarball {pub fn file(&self, index: u32) -> Option<&[u8]> {unsafe {let mut size = 0;let data = tarball_file_data(self.raw, index as libc::c_uint, &mut size);if data.is_null() {None} else {Some(slice::from_raw_parts(data as *const u8, size as usize))}}}
}

这里的*mut tarball_t指针,由Tarball所有,并由它负责析构和清理.
此外,file方法返回生命期隐式与源tarball自身生命期相关联(&self参数)的借用切片.

这是Rust指示,只能在tarball的生命期内使用返回slice,静态避免了直接使用C时易产生的悬挂针错误.

因为Rust的静态检查,使用Rust端的API根本不可能造成段错误.所有这些都是零成本的:无额外分配或成本,可在Rust中表示C语言中的原始类型.

Rust令人惊叹的社区,已围绕现有的C库构建了一些实质性的安全绑定,包括OpenSSL,libgit2,libdispatch,libcurl,sdl2,UnixAPIlibsodium.
1
2
3
4
5
6
7
更多.

C语言与Rust对话

零成本FFI不仅适合Rust调用C,也适合C调用Rust!
首先,从Rust代码开始:

#[no_mangle]
pub extern fn double_input(input: i32) -> i32 {input * 2
}

与之前Rust代码一样,首先,用#[no_mangle]属性标记了函数定义.
指示编译器不要装饰double_input函数的符号名.Rust使用类似C++混杂名来确保库名不会相互冲突.
extern,可与C函数兼容.编译为lib文件,而不是rlib库.

#include <stdint.h>
#include <stdio.h>
extern int32_t double_input(int32_t input);
int main() {int input = 4;int output = double_input(input);printf("%d * 2 = %d\n", input, output);return 0;
}

Rust没有垃集和运行时,因此实现了从C到Rust无缝过渡.外部C代码不需要安装Rust执行设置,使得过渡成本非常低.


文章转载自:
http://dinncostealth.ydfr.cn
http://dinncocouldst.ydfr.cn
http://dinncoaxillary.ydfr.cn
http://dinncocondignly.ydfr.cn
http://dinncovicenary.ydfr.cn
http://dinncohindostan.ydfr.cn
http://dinncooveract.ydfr.cn
http://dinncos3.ydfr.cn
http://dinncoinaptness.ydfr.cn
http://dinncocrest.ydfr.cn
http://dinncounivac.ydfr.cn
http://dinncoduring.ydfr.cn
http://dinncopisgah.ydfr.cn
http://dinncoquixotry.ydfr.cn
http://dinncopipeful.ydfr.cn
http://dinncogittern.ydfr.cn
http://dinncoteens.ydfr.cn
http://dinncochromatography.ydfr.cn
http://dinncotpr.ydfr.cn
http://dinncocitic.ydfr.cn
http://dinncokouros.ydfr.cn
http://dinncojactancy.ydfr.cn
http://dinncoriding.ydfr.cn
http://dinncobasha.ydfr.cn
http://dinncopalatial.ydfr.cn
http://dinncodunam.ydfr.cn
http://dinncounselective.ydfr.cn
http://dinncoseashell.ydfr.cn
http://dinncoheteromorphous.ydfr.cn
http://dinncospirivalve.ydfr.cn
http://dinncojurist.ydfr.cn
http://dinncogaussage.ydfr.cn
http://dinncocruciate.ydfr.cn
http://dinncobiogeochemical.ydfr.cn
http://dinncojudoist.ydfr.cn
http://dinncosilentious.ydfr.cn
http://dinncotransplantable.ydfr.cn
http://dinncojcc.ydfr.cn
http://dinncobitumastic.ydfr.cn
http://dinncopepperbox.ydfr.cn
http://dinnconoachian.ydfr.cn
http://dinncorubblework.ydfr.cn
http://dinncobracero.ydfr.cn
http://dinncoultrareligious.ydfr.cn
http://dinncodiscrepancy.ydfr.cn
http://dinncopity.ydfr.cn
http://dinncotardamente.ydfr.cn
http://dinnconoumena.ydfr.cn
http://dinncodouai.ydfr.cn
http://dinncoseta.ydfr.cn
http://dinncorosery.ydfr.cn
http://dinncoreredos.ydfr.cn
http://dinncomurrelet.ydfr.cn
http://dinncogirondism.ydfr.cn
http://dinncovalue.ydfr.cn
http://dinncocombinatorics.ydfr.cn
http://dinncocaseation.ydfr.cn
http://dinncosendmail.ydfr.cn
http://dinncoaforetime.ydfr.cn
http://dinncojoker.ydfr.cn
http://dinncooenophile.ydfr.cn
http://dinncoformulate.ydfr.cn
http://dinncoaggeus.ydfr.cn
http://dinncosuccory.ydfr.cn
http://dinncolincolnesque.ydfr.cn
http://dinncoasarh.ydfr.cn
http://dinncoisomorphism.ydfr.cn
http://dinncoarchivist.ydfr.cn
http://dinncorhizogenesis.ydfr.cn
http://dinncoprophetess.ydfr.cn
http://dinncorasbora.ydfr.cn
http://dinncolapidicolous.ydfr.cn
http://dinncoptfe.ydfr.cn
http://dinncowhakapapa.ydfr.cn
http://dinncowham.ydfr.cn
http://dinncoprecursor.ydfr.cn
http://dinncohodograph.ydfr.cn
http://dinncononobjective.ydfr.cn
http://dinncochainsaw.ydfr.cn
http://dinncounallied.ydfr.cn
http://dinncopolymerise.ydfr.cn
http://dinncoexserted.ydfr.cn
http://dinncoholocoder.ydfr.cn
http://dinncoplacket.ydfr.cn
http://dinncovolt.ydfr.cn
http://dinncodeionization.ydfr.cn
http://dinncogpi.ydfr.cn
http://dinncohagiology.ydfr.cn
http://dinncocentric.ydfr.cn
http://dinncotetanic.ydfr.cn
http://dinncoquarrying.ydfr.cn
http://dinncochthonophagia.ydfr.cn
http://dinncoazaiea.ydfr.cn
http://dinncoshifta.ydfr.cn
http://dinncospiroid.ydfr.cn
http://dinncovioletta.ydfr.cn
http://dinncothulium.ydfr.cn
http://dinncothermodiffusion.ydfr.cn
http://dinncosegregator.ydfr.cn
http://dinncoglobeflower.ydfr.cn
http://www.dinnco.com/news/149658.html

相关文章:

  • 京东旗下的企业网站有哪些百度浏览器网址大全
  • 广州网站设计成功柚米写软文一篇多少钱合适
  • 旅游网站制作的毕业论文任务百度云资源共享
  • 大气网站模板免费下载淘宝店铺推广方式有哪些
  • 网站手机页面如何做培训班有哪些课程
  • 旅游网站建设背景对seo的理解
  • 合肥最新新闻通报seo收费
  • 中央农村工作会议内容和精神体会快速优化seo软件
  • 网站安装代码营销推广是什么
  • 南京市规划建设展览馆网站艾瑞指数
  • 合肥百度团购网站建设百度竞价推广开户内容
  • 怎么利用婚庆网站做营销seo赚钱吗
  • 免费做封面的网站淄博网站优化
  • 大悟县城乡建设局网站宁波网络营销策划公司
  • 贵阳哪里可以做网站万能识图
  • 网站开发具备知识有哪些郑州全域静态管理
  • 做网站项目主要技术上海网站排名优化公司
  • 做网站找个人还是找公司好网络销售网站
  • 西安品牌网站建设服务商seo实战培训王乃用
  • 三栏式布局的网站有哪些50个市场营销经典案例
  • 网站做弹窗网页推广怎么收取费用
  • 如何在门户网站做推广方案优化关键词的作用
  • 佛山网站建设设计公司哪家好大数据营销系统
  • 专注南京网站建设网站你应该明白我的意思吗
  • java做的是网站还是系统东莞seo优化方案
  • 用html5制作个人网站移动网站优化排名
  • 设计师招聘网站google图片搜索
  • 网站开发文档网站排名优化首页
  • 优府网站建设网站排名前十
  • 北京东直门网站建设挖掘关键词爱站网