Rust编程知识拾遗:Rust 通过属性设置 crate 名称、版本和类型 可以通过crate_type属性告知编译器crate是一个二进制的可执行文件还是一个库,crate_name可以设定crate的名称。 例子: //编写lib.rs #![crate_type = "lib"] #![crate_name = "mylib"] pub fn public_function() { println!("in lib"); } ...
Rust编程知识拾遗:Rust 通过属性设置 crate 名称、版本和类型 可以通过crate_type属性告知编译器crate是一个二进制的可执行文件还是一个库,crate_name可以设定crate的名称。 例子: AI检测代码解析 //编写lib.rs #![crate_type = "lib"] #![crate_name = "mylib"] pub fn public_function() { println!("i...
Rust 承诺编译器将始终接受该语言的所有现存版本,并且程序可以自由混用以不同版本编写的 crate。2015 版的 crate 甚至可以依赖 2021 版的 crate。换句话说,crate 的版本只影响其源代码的解释方式,编译代码时,版本的差异已然消失。这意味着你无须为了继续参与到现代 Rust 生态系统中而更新旧的 crate。同样,你也不必...
--crate-type[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro] 才发现,原来有这么多种 crate type。下面挨个看一下。 bin 二进制可执行 crate,编译出的文件为二进制可执行文件。必须要有 main 函数作为入口。这种 crate 不需要在 Cargo.toml 中或 --crate-type 命令行参数中指定,会自动识别。 lib 库crate。
-l [KIND[:MODIFIERS]=]NAME[:RENAME]将生成的 crate(s) 链接到指定的本地库名称。可选类型可以是static、framework或dylib(默认值)之一。可选的逗号分隔修饰符 (bundle|verbatim|whole-archive|as-needed) 可以用前缀+来指定,以启用或-来禁用。 --crate-type [bin|lib|rlib|dylib|cdylib|staticlib|proc-ma...
[lib]# 编译之后的动态库的名称name="py_lib"# 表示编译成一个和 C 语言二进制接口(ABI)兼容的动态链接库crate-type=["cdylib"] 1. 2. 3. 4. 5. cdylib 表示生成动态库,如果想生成静态库,那么就指定为 staticlib。 下面开始编写源代码,在生成项目之后,src 目录下会有一个 lib.rs,它是整个库的入口...
}// trait 类似 Go 的接口,内部可以定义一系列方法// 在 Go 里面如果实现某个接口的所有方法,那么就代表实现了这个接口// 而在 Rust 里面,你不仅要实现 trait 的所有方法,还要显式地指定实现的 traitimplDebugforGirl{// 语法:impl SomeTrait for SomeType,表示为某个类型实现指定 trait// 在 Rust 里面要...
Rust 生态日趋丰富,很多基础库和框架都会以 包(crate) 的方式发布到 crates.io ,截止目前,crates.io 上面已经有 62981 个 crate,总下载量已经达到 7,654,973,261 次。 按包的使用场景分类,Crates.io 最流行的几个场景依次如下: 命令行工具 (3133 crates) ...
这里的crate-type = ["cdylib"]指示我们的这个crate要编译输出一个符合C语言调用规范的动态库文件,注意这里是cdylib,不是dylib,如果配置为dylib,则输出是符合rust调用规范的动态库,只能在rust语言编写的项目之间互相调用,不能跨到其他语言上使用。 再来介绍一下src目录下的结构: ...
可以通过crate_type属性告知编译器crate是一个二进制的可执行文件还是一个库,crate_name可以设定crate的名称。 例子: //编写lib.rs #![crate_type = "lib"] #![crate_name = "mylib"] pub fn pu…