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

Rust学习心得

我分享一下一年的Rust学习经历,从书到代码都一网打尽。

关于新手如何学习Rust,我之前在Hacker News上看到了这么一篇教程:

这篇教程与其他教程不同的时,他不是一个速成教程,而是通过自己的学习经历,向需要学习Rust的网友分享一些学习心得。短时间内就有广大Hacker News网友分享出了自己学习Rust的经历。

我们都知道,学习一门编程语言,阅读书籍和编写代码是大多数人的学习方式;同样这两者的交替学习对掌握Rust也同样重要。

我学习Rust读的第一本书是“Programming Rust”,这也是我学Rust的入门书籍。

这本书初步介绍了Rust,包含对Rust 1.5的全面概述和参考。

虽说它是入门书籍,但还是需要一定的编程基础,熟悉低级编程,尤其是内存管理。

对于一个有经验的开发人员(最好具有C++背景),知道如何在项目中使用替代资源,这本书是对Rust一个很好而全面的概述。

其次是The Rust Programming Language,相较于Programming Rust,我认为这本书对我会是一个更好的参考,虽然我还没有完整的读过整本书,但它的主要部分我已经看过了。

这本书在谷歌的排名中位于名列前茅,很多人都将这本书作为Rust入门指南,由Rust核心团队的两名成员编写,42名社区成员反馈和贡献。

同样的是,阅读这本书也需要有编程基础,这意味着这些材料对于具有各种编程背景的开发人员来说都是有用的。

总结下来,如果想要阅读这些入门Rust书籍,就必须要具备一定的编程基础。

接下来再来讲Rust in Action,他是关于Rust的一本中级书籍,包含系统编程领域的几个重要项目。

这本书中,介绍的方法很有趣,很适合已经初步了解Rust的人群阅读。

除此之外,它还专注于系统编程,并且写出了很多真正有用的代码。

但很遗憾的是,由于这本书还很新,里面有许多错别字、混淆、代码清单和随附的存储库之间的严重不匹配等。

最后来讲一讲Rust for Rustaceans这本书,先说结论,不推荐阅读。

我很喜欢这本书的作者Jon Gjengset以前发布的一些视频,但是看完这本书却大失所望。

这本书混合了Rust官方书中解释得更好的材料和过于专业的材料,只是一层又一层的文字,几乎没有图表和代码示例,几乎没有任何可编译的项目去做一些有用的事情。

已经了解了学习Rust的相关书籍,在阅读之余也要适当练习练习编写代码。

编写代码练习

既然如此,我们该如何有效练习呢?我也根据自己的经验推荐了一些渠道。

如果开始学习Rust时,可以先用rustlings,它是用来阅读和编写Rust代码片段的小练习。虽然不是很全面,但对于刚入手的小白来说还是挺有用的。

网站附于在回答文末。

再来说说Advent of Code,2021年版很适合用来练习Rust,一共有25个问题,根据它里面的指示来编写代码,完成任务。

通过解决AOC的问题,可以很好地学习和练习编程语言。

我已经完成了前面的18个问题,很可能会再次在Rust中处理AOC 2024,来保持我编写Rust代码的感觉。

The Ray Tracer Challenge book,这本书由一系列“单元测试”和易于翻译成任何语言的伪代码组成,可以用来指导我们使用编程语言来实现光线追踪器。

在学习新的编程语言的时,我们还可以构建一些可视化的项目,至少不会很快会感觉枯燥。

但是,这本书中解释了为什么他提供的公式和伪代码有效,无助于培养直觉。

这导致调试问题时会发生严重的差错。由于没有开发直觉,因此调试的唯一方法是将代码与书中的伪代码进行细致的比较,以确保在抄写过程中没有丢失或输入错误的内容。

当然总体来说,还是值得一读的。

最后来讲一讲Crafting Interpreters,在这本书中,作者从头到尾为该语言开发了两个完整的解释器,包括所有前端和后端部分。

在书中,两个解释器的所有代码都完全包含在文本中并分段呈现。并不需要翻阅外部的存储库。直接阅读并将代码复制到自己的编辑器中即可运行。

我也对这本书抱有很高的评价,我认为这本书是我在看过的许多编译器书籍中,迄今为止最实用的。

除了以上这些,我还做了很多实验,编写代码来探索Rust的各个领域。

相关文章:

Rust学习心得

我分享一下一年的Rust学习经历,从书到代码都一网打尽。 关于新手如何学习Rust,我之前在Hacker News上看到了这么一篇教程: 这篇教程与其他教程不同的时,他不是一个速成教程,而是通过自己的学习经历,向需要…...

K8s deployment 进阶

文章目录 K8s deployment 进阶Deployment 更新策略RecreateRollingUpdatemaxSurge 和 maxUnavailable minReadySecondsprogressDeadlineSeconds Deployment 版本回滚Deployment 实现灰度发布 K8s deployment 进阶 Deployment 更新策略 Recreate 重建 (Recreate)&…...

python实现二叉搜索树(AVL树)简单样例

一、二叉搜索树 class TreeNode:def __init__(self, value):self.value valueself.left Noneself.right Noneclass BinarySearchTree:def __init__(self):self.root Nonedef insert(self, value):if self.root is None:self.root TreeNode(value)else:self._insert(self.…...

Day47 打家劫舍123

198 打家劫舍 题目链接:198.打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,…...

OceanBase 开源社区新进展|obdiag SIG成立

为了构建完善的 OceanBase 诊断生态系统,汇聚各方力量,形成涵盖工具、知识在内的全方位诊断生态体系,助力开发者更高效地驾驭 OceanBase,OceanBase 社区宣布成立诊断 SIG,名称:obdiag SIG。 详情参加原文链…...

React类组件生命周期详解

在React的类组件中,从组件创建到组件被挂载到页面中,这个过程react存在一系列的生命周期函数,最主要的生命周期函数是componentDidMount、componentDidUpdate、componentWillUnmount 生命周期图例如下 1. componentDidMount组件挂载 如果你…...

智能车竞赛指南:从零到一,驶向自动驾驶的未来

智能车竞赛指南:从零到一,驶向自动驾驶的未来 一、智能车竞赛概览1.1 竞赛介绍1.2 竞赛分类 二、智能车开发技术基础2.1 硬件平台2.2 软件开发 三、实战案例:循线小车开发3.1 系统架构3.2 代码示例 四、技术项目:基于ROS的视觉导航…...

微服务项目收获和总结---第2,3天(分库分表思想,文章业务)

①分库分表思想 文章表一对一为什么要拆分?因为文章的内容会非常大,查询效率会很低,我们经常操作文章的基本信息,不会很经常查询文章内容。充分发挥高频数据的操作效率。 ②freemarker和minIO 由于文章内容数据量过大&#xff0c…...

【全网最全】2024电工杯数学建模A题21页初步参考论文+py代码+保奖思路等(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片链接,那是获取资料的入口! 【全网最全】2024电工杯数学建模A题21页初步参考论文py代码保奖思路等(后续会更新成品论文)「首先来看看目前已有的资料&#x…...

怎么通过OpenAI API调用其多模态大模型(GPT-4o)

现在只要有额度,大家都可以调用OpenAI的多模态大模型了,例如GPT-4o和GPT-4 Turbo,我一年多前总结过一些OpenAI API的用法,发现现在稍微更新了一下。主要参考了这里:https://platform.openai.com/docs/guides/vision 其…...

自定义文字线性

...

robosuite导入自定义机器人

目录 目的:案例一:成果展示具体步骤:URDF文件准备xml文件生成xml修改机器人构建 目的: 实现其他标准/非标准机器人的构建 案例一: 成果展示 添加机器人JAKA ZU 7 这个模型 具体步骤: URDF文件准备 从…...

四天学会JS高阶(学好vue的关键)——构造函数数据常用函数(理论+实战)(第二天)

一、对象创建引发构造函数产生 1.1 创建对象三种方式: 利用对象字面量创建对象 const obj {name: 佩奇}注:对象字面量的由来:即它是直接由字面形式(由源代码直接)创建出来的对象,而不是通过构造函数或者…...

【Linux学习】进程地址空间与写时拷贝

文章目录 Linux进程内存布局图&#xff1a;内存布局的验证 进程地址空间写时拷贝 Linux进程内存布局图&#xff1a; 地址空间的范围&#xff0c;在32位机器上是2^32比特位,也就是[0,4G]。 内存布局的验证 代码验证内存布局&#xff1a; 验证代码&#xff1a; #include<s…...

Git远程控制

文章目录 1. 创建仓库1.1 Readme1.2 Issue1.3 Pull request 2. 远程仓库克隆3. 推送远程仓库4. 拉取远程仓库5. 配置Git.gitignore配置别名 使用GitHub可以&#xff0c;采用Gitee也行 1. 创建仓库 1.1 Readme Readme文件相当于这个仓库的说明书&#xff0c;gitee会初始化2两份…...

怎样从SQL中分析和提取访问的字段信息?| OceanBase实践

当执行任意一条SELECT SQL语句时&#xff0c;我们如何能够分析出所访问的字段信息&#xff0c;并进一步判断结果集中的每一列数据具体来自于哪些数据库、表以及表中的哪些字段呢&#xff1f;本文将会详细阐述针对此问题的技术解决方案。 应用场景 从 SQL 中解析访问的原始字段…...

MySQL 服务无法启动

常见原因: 检查端口占用&#xff1a; 使用命令行工具&#xff08;如netstat&#xff09;来检查3306端口是否已被其他程序占用,输入netstat -ano&#xff08;Windows&#xff09;或netstat -tulnp | grep 3306&#xff08;Linux/Mac&#xff09;来查找3306端口的占用情况。如果…...

Python贪心算法

贪心算法&#xff08;Greedy Algorithm&#xff09;是一种常见的算法设计策略&#xff0c;它在每一步选择当前最优解&#xff0c;希望通过局部最优解最终得到全局最优解。贪心算法通常适用于满足一些特定条件的问题&#xff0c;例如货币找零、活动选择、任务调度等。贪心算法的…...

牛客网刷题 | BC85 牛牛学数列3

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 牛牛准备继续进阶&…...

quartz定时任务

Quartz 数据结构 quartz采用完全二叉树&#xff1a;除了最后一层每一层节点都是满的&#xff0c;而且最后一层靠左排列。 二叉树节点个数规则&#xff1a;每层从左开始&#xff0c;第一层只有一个&#xff0c;就是2的0次幂&#xff0c;第二层两个就是2的1次幂&#xff0c;第三…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...