前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Rust日报】2023-10-24 一位 Python 开发者学习 Rust 的心路历程

【Rust日报】2023-10-24 一位 Python 开发者学习 Rust 的心路历程

作者头像
MikeLoveRust
发布2023-10-25 20:33:25
2060
发布2023-10-25 20:33:25
举报

一位 Python 开发者学习 Rust 的心路历程

我对学习一门新语言一直犹豫不决。在我的职业生涯中,我大部分时间都使用Python。当需要时,我也会使用诸如PowerShell、Lua和Javascript等语言,但我总是回到我熟悉的领域。我在大学之外从未使用过编译语言或系统语言,现在是时候重新学习一门新语言了。

我一直在学习 Go 和 Rust 之间犹豫不决,同时也在思考是否真的需要转向其他语言,因为我在 Python 方面从未遇到过让我不得不转换的难题。Rust 在速度和安全性方面一直名列前茅,并且根据 Stack Overflow 的调查,它也是最受欢迎的编程语言之一。

我真正被激发去深入学习Rust的原因是听了《Ship It》播客,Tim McNamara 在其中谈到他如何在 AWS 推广 Rust。Rust 不仅仅能节省计算资源,还能提高可持续性,节约资金。通过观察 Lambda 的冷启动时间,并推断出所有可能受益的资源,将会大大减少所需资源的数量。

然后我开始了一场学习之旅.

ReadMore: https://blog.erikhorton.com/2023/10/22/skills-getting-rusty.html

从 Vec<Result<>> 中生成 Result<>

假设你有一个可能失败的函数,并且你调用它多次。类似这样的情况:

代码语言:javascript
复制
fn fetch_chunk(from: usize, to: usize) -> Result<Row, Error> {
    // 一些实现
}

当我们调用它时,如果直接收集结果,我们会得到一堆 Result

代码语言:javascript
复制
let chunks: Vec<Result<Row, Error>> =
    indexes.iter().map(|i| fetch_chunk(i, i+1)).collect();

这样处理起来有点丑陋。在很多情况下,这可能确实是你想要的类型,因为你可以知道哪些操作失败了。但有时,你只想知道是否有任何失败,那么你可以直接将结果收集到一个 Result

代码语言:javascript
复制
let chunks: Result<Vec<Row>, Error> =
    indexes.iter().map(|i| fetch_chunk(i, i+1)).collect();

这是几乎相同的代码,只是有不同的类型签名,并且收集到不同的类型中。这真是太酷啦。

ReadMore: https://ntietz.com/blog/rust-vec-of-result/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一位 Python 开发者学习 Rust 的心路历程
  • 从 Vec<Result<>> 中生成 Result<>
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档