如何在面试中确定 Rust 程序员水平?

对于这个问题,张汉东老师在 RustFriday 飞书群线上沙龙第十三期中进行了分享:

  • 视频:RustFriday 飞书群线上沙龙 第十三期 | 【讨论】如何在面试中考察一个人 Rust 水平?_哔哩哔哩_bilibili

  • 博文:如何在面试中 确定 Rust 程序员水平?

还有一张导图很好地提供了一个结构化的框架:

Pushgen: 用于处理范围和数据流的推式设计模式

这样使用:

# fn process(x: i32) {}
# let data = [1, 2, 3, 4, 5];for item in data.iter().filter(|x| *x % 2 == 0).map(|x| x * 3) {process(item);
}// 可以写成
use pushgen::{SliceGenerator, GeneratorExt};
# fn process(_x: i32) {}
# let data = [1, 2, 3, 4, 5];
// Assume data is a slice
SliceGenerator::new(&data).filter(|x| *x % 2 == 0).map(|x| x * 3).for_each(process);

GitHub 地址:AndWass/pushgen

这里还有一个对比:transrangers/rust.md at master · joaquintides/transrangers

30 行的 TCP 代理

博客地址:zeke | tcp-proxy

GitHub 地址:ZekeMedley/tcp-proxy: Simple Rust TCP proxy using Tokio

核心代码:

async fn proxy(client: &str, server: &str) -> io::Result<()> {let listener = TcpListener::bind(client).await?;loop {let (eyeball, _) = listener.accept().await?;let origin = TcpStream::connect(server).await?;// 将连接分为读写let (mut eread, mut ewrite) = eyeball.into_split();let (mut oread, mut owrite) = origin.into_split();// 生成线程复制let e2o = tokio::spawn(async move { io::copy(&mut eread, &mut owrite).await });let o2e = tokio::spawn(async move { io::copy(&mut oread, &mut ewrite).await });// 如果连接某一端关闭了,则关闭另一端select! {_ = e2o => println!("e2o done"),_ = o2e => println!("o2e done"),}}
}

使用:

# 代理 1212 到 1313
$ cargo run -- -e 0.0.0.0:1212 -o 127.0.0.1:1313
# 监听 1313 上的 tcp 连接
$ nc -l 1313
# 建立到 1212 的连接,确认是否转发
$ echo hello | nc 127.0.0.1 1212

是的,又一个 Hands-on,For 2D Game

地址:(2) Hands-On Rust : rust

Ebook:Hands-on Rust: Effective Learning through 2D Game Development and Play by Herbert Wolverson

代码开源,书要钱:)

Yore:根据 OEM 代码页解码 / 编码字符集的 Rust 库

特点:

  • 最小内存使用

  • 支持多种代码页

  • 支持重新定义 ascii (<0x80) 的代码页

来自维基百科的解释:

代码页:字符编码的别名,也称**内码表**,是特定语言的字符集的一张表。

字符编码(英语:Character encoding)、 字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、 8 位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和 ASCII。其中,ASCII 将字母、数字和其它符号 编号,并用 7 比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以 1 个字节的方式存储。

在计算机科学及相关领域当中,内码指的是 “将信息编码后,透过某种方式存储在特定记忆设备时,设备内部的编码形式”。在不同的系统中,会有不同的内码。在以往的英文系统中,内码为 ASCII。在繁体中文系统中,目前常用的内码为 大五码。在简体中文系统中,内码则为国标码。为了软件开发方便,如国际化与本地化,现在许多系统会使用 Unicode 做为内码,常见的操作系统 Windows、Mac OS X、Linux 皆如此。许多 编程语言也采用 Unicode 为内码,如 Java、Python 3。

简单使用:

use yore::code_pages::{CP857, CP850};// Vec contains ascii "text"
let bytes = vec![116, 101, 120, 116];// notice that decoding CP850 can't fail because it is completely defined
assert_eq!(CP850.decode(&bytes), "text");// encoding
assert_eq!(CP850.encode("text").unwrap(), bytes);use yore::CodePage;
fn do_something(code_page: &dyn CodePage, bytes: &[u8]) {println!("{}", code_page.decode(bytes).unwrap());
}

另外两个类似的库:

  • lifthrasiir/rust-encoding: Character encoding support for Rust

  • tats-u/rust-oem-cp: Rust library that handles OEM code pages (e.g. CP{437,737,850}) for single byte character sets

Rust 开发的 NPM 包搜索引擎

非常快速的 NPM 包搜索引擎:fast-npm-search.xyz | NPM packages search


From 日报小组 长琴

社区学习交流平台订阅:

  • Rustcc 论坛:支持 rss

  • 微信公众号:Rust 语言中文社区

【Rust 日报】2021-07-04 如何在面试中确定 Rust 程序员水平?相关推荐

  1. 如何在面试中发现优秀程序员

    英文原文:Finding awesome developers in programming interviews 我曾在一次面试中要求一个很有经验的嵌入式软件开发人员写出一个反转一段字符串并输出到屏 ...

  2. 标 题: 腾讯面试题目(PHP程序员)

    发信人: max19830115 (max), 信区: Programming 标  题: 腾讯面试题目(PHP程序员) 发信站: 水木社区 (Mon Apr 18 16:26:07 2011), 站 ...

  3. 一次哔哩哔哩面试经历,论程序员成长的正确姿势

    前言 今年互联网形式依旧严峻,再次爆发几次大规模裁员潮.我决定把这篇文章分享出来帮助那些对前途感到迷茫的朋友.根据粉丝投稿的真实经历改编 在现在这个浮躁而又拜金的社会,我相信很多人做技术并非出于热爱, ...

  4. 程序员面试官何苦为难程序员!

    作者: JasNature出处: http://NatureSex.cnblogs.com 有时候想想程序员何苦为难程序员呢? 扳扳手指走上码农这个行业也有几年了,但是越来越觉得这个行业很累,有人说程 ...

  5. 书单|互联网企业面试案头书之程序员软技能篇

    企业在招聘人才时,除了会评估工作需要的专业技能,也越来越看重面试者的软技能. 软技能,就像冰山模型下那70%的存在,虽然不容易被看到,却有可能决定着我们未来职业发展的天花板! 本期就为大家带来12本程 ...

  6. 安卓开发面试书籍,每个程序员都必须掌握的8种数据结构!面试必会

    前言 本篇文章主要记录分享我的面试准备过程. 很多朋友问我为什么离职 关于离职原因,马云有一句经典的话"要么钱没给到位,要么心委屈了",想必大家耳熟能详了,我这里再细说一下我个人离 ...

  7. 面试加分项!程序员工作2年月薪12K,附架构师必备技术详解

    最近看到群里看到一个女生,讲述了她从开始选择Android,经过非常努力的学习和挣扎,然而最后面对当前的环境却不得不放弃.看完以后真的非常替她感觉惋惜,如果早几年入行可能结果会比现在好很多,但可惜,这 ...

  8. 某面试官面试一个百度T7程序员,出了一道这样的coding题!T7竟不会!被面试官嘲笑!...

    请点击上面 一键关注! 程序员面试时都考些什么? 一个面试官得意洋洋地说自己面了一个百度T7,出了一道coding题,结果对方连最长上升子序列都写不出来. 楼主本想嘲弄一下百度T7的代码水平低,没想到 ...

  9. 2019年的面试经验:Java程序员越来越悲催了!

    就今年大环境来看,跳槽成功的难度比往年高很多,一个明显的感受:今年的Java技术栈面试,无论一面还是二面,都特别考验Java程序员的技术功底. 最近有人搜集了93套腾讯.阿里.美团.百度.网易等公司9 ...

最新文章

  1. Linux下查看系统信息
  2. UICollectionView入门--使用系统UICollectionViewFlowLayout布局类
  3. Openlayers中将某个feature置于最上层
  4. 章节六、2-异常---运行时异常
  5. php组合查询,PHP组合查询多条件查询实例代码第1/2页
  6. 2020年工作总结大会感悟
  7. 3个简单步骤即可测试Java 8
  8. 计算机入门 姚班,清华“姚班”:学霸中的尖子生,大佬毕业后都去哪了?
  9. Solr7 安装部署 管理界面介绍 1
  10. 除手机平板PC外 华为终端明年全线搭载鸿蒙系统
  11. (图论)51NOD 1264 线段相交
  12. flink源码分析_Flink源码分析之深度解读流式数据写入hive
  13. httpd2.4.39直接访问路径下的ceb文件,显示乱码
  14. 服务器主板的无线驱动,给因特尔S2600CO服务器主板安装【SAS控制器】驱动
  15. 小学四年级计算机在线考试,小学信息技术四年级下册试题.DOC
  16. 【语义分割】3、用mmsegmentation训练自己的分割数据集
  17. C# 公历日期时间转农历日期方法 注解解读
  18. 长大后的我们为何贪恋年少?
  19. 计算机中常用源码,什么是源码
  20. linux系统安装驱动rtl8188eu,rtl8188eu_USB_linux RTL8188EU驱动源码

热门文章

  1. Adobe国际认证-摄影的供求:成为专业摄影师需要什么
  2. Idea导出war包
  3. 锁表:MyISAM非聚集索引和InnoDB聚集索引的各种锁表问题
  4. Java学习笔记 --- 字符类型
  5. LibreOffice 设置为中文字体
  6. Kali Linux系统开启SSH服务教程
  7. 互联网裁员寒冬来袭,悲伤逆流成河,Java程序员如何绝地求生?
  8. Java降落伞_Java 小例子:轮询淘汰 | 学步园
  9. 《Java EE SSM框架》学习笔记(5、映射器)
  10. 详解IBM刀片服务器五大系列