Rust 第三方库创建和导入(cargo --lib)

前言

日常开发过程中,难免会有一些工具方法,多个项目之间可能会重复使用。
所以将这些方法集成到一个第三方包中方便后期维护和管理,
比如工具函数如果需要修改,多个项目可能每个都需要改代码,
抽离到单独的包中只需要修改包里面的代码和版本即可,其他项目更新一下版本无需多次修改。

对【RUST实际开发过程中模块之间的互相调用】不清楚的,可以点此进行查看

步骤

说明

这里业务代码项目名称为test_code,包名称rust_math(一些简单的计算方法)

开始

  • 执行以下命令
  cargo new test_code
  • 使用编辑器打开此目录,在此目录下新建一个包,执行以下命令
  cargo new rust_math --lib

目录结构

image.png

在业务项目的Cargo.toml中添加以下代码,引入本地包

[dependencies]
rust_math = { path = "./rust_math" }

包代码编写

在rust_math/src/lib.rs中编写以下代码

pub fn add(left: usize, right: usize) -> usize {
    left + right
}

#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn it_works() {
        let result = add(2, 2);
        assert_eq!(result, 4);
    }
}

其中主要方法为add用于返回两数之和,下面的代码为单元测试

业务代码编写

在src/main.rs中编写以下代码

use rust_math;

fn main() {
    let sum: usize = rust_math::add(1, 1);
    println!("{}", sum);
}

运行

cargo run

运行结果

2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/672040.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI办公自动化:用kimi批量提取音频中的标题并重命名

很多音频文件,文件名很乱,需要根据音频信息中的标题聪明吗 在kimi中输入提示词: 你是一个Python编程专家,一步步的思考,完成以下脚本的撰写: 打开文件夹:E:\有声\a16z播客 读取里面所有的mp3格…

关于vlookup的第一个参数的个人理解

VLOOKUP(查阅值,包含查阅值和返回值的查找区域,查找区域中返回值的列号,精确查找或近似查找) 我个人理解,第一个参数应该叫线索值,因为我们要通过它去找与其对应的(也就是与其同行的…

Soulmask灵魂面甲服务器一键开服联机教程

1、购买后登录服务器(百度莱卡云) 进入控制面板后会出现正在安装的界面,安装大约5分钟(如长时间处于安装中请联系我们的客服人员) 2、创建端口 点击网络➡创建新的网络设置 需要创建两个端口,一个 查询端口…

SAP_SD模块-销售交货并开票后发现物料没维护价格的完整处理方法(含POD功能)

销售流程完结后,发现物料价格没维护时,如何处理 一、业务背景: 1、问题发现时间:2024年6月2日; 2、问题描述: 2024年5月份的单据业务存在交货成本和开票成本为0的单据&#x…

【Hive SQL 每日一题】统计指定范围内的有效下单用户

文章目录 测试数据需求说明需求实现 前言:本题制作参考牛客网进阶题目 —— SQL128 未完成试卷数大于1的有效用户 测试数据 -- 创建用户表 DROP TABLE IF EXISTS users; CREATE TABLE users (user_id INT,name STRING,age INT,gender STRING,register_date STRING…

cocos入门5:编辑器界面介绍

Cocos Creator是一款功能强大的跨平台游戏开发工具,其编辑器界面设计直观易用,提供了从资源管理、场景编辑到脚本编写等一站式解决方案。下面是对Cocos Creator编辑器界面的详细介绍: 一、界面布局 Cocos Creator编辑器界面通常包含以下几个…

【计算机毕设】基于SpringBoot的医院管理系统设计与实现 - 源码免费(私信领取)

免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 本项目旨在设计并实现一个基于SpringBoot的医院管理系统,以提高医院管理效率,优化医疗服务流程,提升患者就诊体验…

FL Studio Producer Edition 21.2.2.3914 所有插件版安装教程指南

FL Studio Producer Edition 21.2.2.3914 所有插件版是一款功能强大的软件音乐制作环境或数字音频工作站(DAW)。FL Studio 中文学习版可以帮助你制作出色的音乐,为您提供了一个集成的开发环境,使用起来非常简单有效,您…

2.4 操作系统死锁(死锁的概念、产生、防止、预防、避免)

文章目录 一、死锁的概念1.1 死锁、饥饿、死循环对比1.1.1 死锁(Deadlock)1.1.2 饥饿(Starvation)1.1.3 死循环(Infinite Loop) 1.2 死锁产生的条件 二、预防死锁三、避免死锁四、死锁的检测和解除4.1 资源…

Arduino 按钮及弹跳

所需元件 可插入面包板的按钮1个 220Ω电阻1个 10kΩ电阻1个 3mm或5mm LED 1个 面包板1块 Arduino Uno开发板1块 面包板连接线数条 使用外接电阻 将5V接到按钮,按钮的另一端串联1个10kΩ电阻再接地,这样的接法被称为下拉电阻(pull-down resistor)。若测…

Vue01-vue的简介

一、Vue是什么? 一套用于构建用户界面的渐进式javaScript框架。 构建用户界面: 渐进式: 目前Vue的地位:生态完善,国内前端工程师必备技能。 二、Vue的特点 一个XXX.vue就是一个组件,封装的概念&#xff0c…

智慧校园有哪些特征

随着科技的飞速进步,教育领域正经历着一场深刻的变革。智慧校园,作为这场变革的前沿代表,正在逐步重塑我们的教育理念和实践方式。它不仅仅是一个概念,而是一个集成了物联网、大数据、人工智能等先进技术的综合生态系统&#xff0…

QT 信号和槽 一对多关联示例,一个信号,多个槽函数响应,一个信号源如何绑定多个槽函数

在窗体里放置一个单行文本编辑控件(QLineEdit)、一个标签控件(QLabel)和一个文本浏览控件(QTextBrowser),在单行文 本编辑控件里的文本被编辑时,标签控件和文本浏览控件都会同步显示…

codefun的蓝桥杯国赛之旅

前言 好久没有刷算法了,今天完成了我的蓝桥杯国赛之旅! 总的来说,比赛的过程不是很顺利,只能ac两道题目,好多题都是有思路,但是要么是写不出来,要么是debug不出来,多重背包&#xf…

C++——输入输出、基本变量类型

目录 一、输入输出 1、标准输出流(cout) 2、标准输入流(cin) 3、标准错误流(cerr)和标准日志流(clog) 4、示例代码 二、基本数据类型 1、宽字符的用法 2、如何使用 3、示例…

能离线翻译的软件有哪些?随时随地,翻译随行

语言不通,旅途怎敢说走就走? 掌握一门或多门外语似乎成了外出旅游的必备技能,然而这是很有难度的一个事情。好在,越来越多的翻译软件浮出水面,给我们带来极大帮助。但谁说非得在线才能沟通无阻? 今天我们…

[数据结构]字典树

概念: 字典树是一种数据结构,常用于统计,排序和保存大量的字符串(但不仅限于字符串)。主要思想是利用字符串的公共前缀来节约存储空间。 实现原理: 在开发的过程中如果需要使用字典树,不必自己…

c++异常处理exception

// c中的异常处理 // 1.throw : 专门用于抛出异常,做出提示 // 2.try : 尝试运行可能会异常的代码 // 3.catch : 用于接收前面跑出来的异常并进行解决// 执行循序为: // try // { // throw ...; // 执行的代码中必须直接或者…

图的创建和遍历

孤勇者探险(图的遍历) 作者 YJ 单位 西南石油大学 一款名为“孤勇者探险”的游戏,游戏中共有若干个小岛,每个岛上均有怪兽,闯关者打倒岛上的怪兽则可获得该岛对应的游戏积分(每个岛的积分根据难度可能不相…

HALCON-从入门到入门-读取图片保存图片

1.废话 视觉算法库的第一步。 读取图片: 看你是从哪里读取,从相机读取还是从本地硬盘中读取。 保存图片:就只有保存到本地了。 上面的截图显示我读取了一张图片 从相机中读取另开一篇来说,先说从本地磁盘读取哈。 怎么读取的…