IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 在Python和Go项目之后使用Rust的经验分享 - scaleway -> 正文阅读

[Python知识库]在Python和Go项目之后使用Rust的经验分享 - scaleway

我于 2021 年 1 月加入 Scaleway,建立新的网络系统和自动化团队,负责所有工具和基础设施,以帮助网络工程师团队。在这一点上,我主要使用 Python 和 Go 进行编码,我正在寻找一个有用的、非关键的项目来开始试验 Rust 并评估它是否对我们的内部堆栈开发感兴趣。

Scaleway 在我们的日常工作中使用了许多不同的内部系统,并维护所有系统的正常工作。

我们长期使用的其中之一是著名的?Netbox?,作为我们的 DCIM/IPAM,用于管理我们所有的硬件库存和 IP 寻址计划。我们最近部署了另一个鲜为人知的开源产品?Netshot,?以满足我们的网络配置合规性和备份需求,同时也替换了我们旧的 RANCID,它只做配置备份并且更难维护。

由于 Netbox 是我们库存的真实来源,而且我们有大量的网络设备(交换机、路由器等)需要管理,因此在 Netshot 上手动添加所有现有和新设备是不可能的每次我们在 Netbox 中添加一些东西时。

我们搜索了可以将设备从 Netbox 同步到 Netshot 的现有工具,但找不到任何东西。

我在 Python 和 Go 方面有很多经验,但我想在一个新的非关键项目中试验 Rust,对于这个项目是一个很好的候选。

Rust vs. Python vs. Go

我希望与 Rust 合作,因为它似乎是一种专注于安全性和良好性能的语言。

我喜欢使用静态类型安全,IDE 可以用几种语言帮助解决这个问题。但是由于 Python 的 IDE 在类型安全、重构和完成功能方面并不总是最佳的(它提供了一种带有类型提示的静态类型 - 但它没有被强制执行,并不总是可用,因为 Python 是动态的,并不总是可预测的,它不提供最终任何真正的安全)。所以,我选择了 Rust。

我还在寻找一种可以在单个无运行时二进制文件中编译或打包的语言,这样我们就不必管理任何 Python 或库版本要求。

我喜欢泛型、可选类型、模式匹配和适当的错误管理等高级功能,所以 Rust 似乎比 Go 更合适。

  • 如果该项目在 Python 上运行:必须在我们想要部署它的任何地方管理依赖项的麻烦,或者必须为它创建大量的容器映像 - 部署速度较慢且难以维护。
  • 如果该项目在 Go 上运行,但错误管理不会那么有效:Go 中缺少泛型有时也会让你做一些肮脏的变通方法,而 Rust 会给你一些有趣的功能方法(模式匹配、强大的集合)库包)。

总结:这个项目在 Python 或 Go 中的工作方式相同,但在 Rust 中编码更有效!

体验报告

对于使用新语言的第一个项目来说,这种体验很好。编译失败时的错误信息非常明确,通常直接包含问题的解决方案。这些库通常有很好的文档,比如?reqwest?、?serde?和?structopt?在我的例子中,这使得它们易于使用,并且与您从 Python 等动态语言中可以获得的相比,各种 IDE 帮助的自动完成功能(类型提示不是精确到真正的静态类型)

当您来自其他语言时,将测试作为子模块直接包含在每个 Rust 文件中的事实有点令人惊讶。但它易于管理,并且来自cargo的集成测试系统是用户友好的。

我在内存管理方面遇到了一些麻烦,因为当您习惯于使用垃圾收集器(如 Python 或 Go)使用语言进行编码时,您已经习惯了编译器给出一些提示但并不总是指向问题的根源。因为这对我来说不是一个持续存在的问题,所以我不时使用 .clone() 以避免过多地增加复杂性。

我还喜欢这样一个事实,即有 Cargo 插件可以直接创建 deb 和 rpm 档案,以便在各种 Linux 发行版上轻松分发应用程序。

这是一次很好的体验,我喜欢使用 Rust,我将在下一个项目中再次使用它。可能有些代码直接在 Cisco Nexus 设备上运行,以避免使用旧的 Python 2。Rust 将成为团队中的默认语言之一,因为我们一直对其功能感到满意。

由于不必手动添加所有新设备,开发此工具为我们节省了大量时间和麻烦。该项目?可在此处获得?,旁边还有 Scaleway 参与的其他开源项目。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 09:51:35  更:2021-11-27 09:53:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:57:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码