草庐IT

tonic-Rust

全部标签

写Rust,有三大内伤

​作者|RomanKashitsyn编译|言征Rust是语言设计领域的一个热点。它允许我们用简洁、可移植、有时甚至是漂亮的代码构建高效、内存安全的程序。然而,凡事都有两面,不会到处都是玫瑰和阳光。内存管理的细节通常会让开发工作陷入抓狂,并使代码比“高级”编程语言(如Haskell或OCaml)中的,更丑陋、更重复。最让人恼怒的是,在几乎所有情况下,这些问题都不是编译器的缺陷,而是Rust团队设计选择的直接后果。《编程元素》一书中,作者AlexanderStepanov写到:“函数式编程处理值;命令式编程处理对象。”本文通过丰富的案例详细介绍了如果你以函数式编程思维来处理Rust,它会有多令开发

Go 为什么不像 Rust 用 ?!做错误处理?

大家好,我是煎鱼。之前每次写Go错误处理的相关提案时,大家都会在评论区探讨到一个事。Go这活不得劲,常被戏称,一个大型Go工程项目里60%的代码都是 iferr!=nil。咱们错误处理怎么不借鉴一下Rust,高低也整个问号的语法特性,就可以简化这三行了,不香吗?借鉴Rust用?!|符号核心的点是在现有的Go例子中,我们一般要写 iferr!=nil,多了之后又多又杂看起来还有些麻烦。如下Go代码:count,err=fd.Write(bytes)iferr!=nil{returnnil,err}如果我们也借鉴Rust使用!和?的简化版,我们可以演进为如下代码:count:=fd.Write!(

Go 为什么不像 Rust 用 ?!做错误处理?

大家好,我是煎鱼。之前每次写Go错误处理的相关提案时,大家都会在评论区探讨到一个事。Go这活不得劲,常被戏称,一个大型Go工程项目里60%的代码都是 iferr!=nil。咱们错误处理怎么不借鉴一下Rust,高低也整个问号的语法特性,就可以简化这三行了,不香吗?借鉴Rust用?!|符号核心的点是在现有的Go例子中,我们一般要写 iferr!=nil,多了之后又多又杂看起来还有些麻烦。如下Go代码:count,err=fd.Write(bytes)iferr!=nil{returnnil,err}如果我们也借鉴Rust使用!和?的简化版,我们可以演进为如下代码:count:=fd.Write!(

使用 Rust 实现的现代化实时开源数据仓库

一、简单介绍TensorBase是使用Rust实现的现代化实时开源数据仓库。二、特性AllinRust。TensorBase称已经在日常测试中经历数十TB的数据注入锤炼,是目前Rust社区中,面向用户特别是中小企业实际场景深度优化的、生产完成度最高的通用数据仓库类项目。开箱即用。TensorBase已经支持从数据插入或导入到查询完整数据仓库流程,具备了较高的早期完成度,用户可以从TensorBase的Release页下载相关Linux环境下的二进制文件,进行尝试。(Windows10的WSL2目前应该也可以使用)兼容ClickHouse协议。ClickHouse是一个C++编写的数据仓库。Te

使用 Rust 实现的现代化实时开源数据仓库

一、简单介绍TensorBase是使用Rust实现的现代化实时开源数据仓库。二、特性AllinRust。TensorBase称已经在日常测试中经历数十TB的数据注入锤炼,是目前Rust社区中,面向用户特别是中小企业实际场景深度优化的、生产完成度最高的通用数据仓库类项目。开箱即用。TensorBase已经支持从数据插入或导入到查询完整数据仓库流程,具备了较高的早期完成度,用户可以从TensorBase的Release页下载相关Linux环境下的二进制文件,进行尝试。(Windows10的WSL2目前应该也可以使用)兼容ClickHouse协议。ClickHouse是一个C++编写的数据仓库。Te

关于rust中的“安全”与“非安全”

在实际使用Rust过程中很多时候,基于rust自身的来实现功能和代码的编写,并依托编译期自身来帮助我们进行“编译检查”,这时候相对来说我们使用的Rust是“安全的”;不过另外一些“特殊”场景下的需求需要我们来处理底层实现,比如直接与系统层面交互或与汇编指令操作等,那此刻rust可能就变得“不安全”。换种说法:rust是一种同时包含安全和非安全特性的编程语言。安全的Rust若是我们所编写的代码均是使用安全rust进行编写的,此时我们无需担心类型安全和内存安全,更无需专注于“垂悬指针”、“二次释放引用”、“其他各种未定义的行为”等;诸如标准库中也提供了很多工具库,来帮忙我们构建符合安全Rust规范

关于rust中的“安全”与“非安全”

在实际使用Rust过程中很多时候,基于rust自身的来实现功能和代码的编写,并依托编译期自身来帮助我们进行“编译检查”,这时候相对来说我们使用的Rust是“安全的”;不过另外一些“特殊”场景下的需求需要我们来处理底层实现,比如直接与系统层面交互或与汇编指令操作等,那此刻rust可能就变得“不安全”。换种说法:rust是一种同时包含安全和非安全特性的编程语言。安全的Rust若是我们所编写的代码均是使用安全rust进行编写的,此时我们无需担心类型安全和内存安全,更无需专注于“垂悬指针”、“二次释放引用”、“其他各种未定义的行为”等;诸如标准库中也提供了很多工具库,来帮忙我们构建符合安全Rust规范

ruby字符串生rust并再次返回

Rubystringtorustandbackagain我正在尝试将Ruby中的字符串传递给rust可执行文件,对其进行操作并将被操作的字符串传回。到目前为止,我可以将字符串传入并返回,但我不知道如何将其转换为rust字符串,对其进行操作,然后将其传递回ruby??。这是我到目前为止所拥有的:1234567891011121314151617181920212223242526//lib.rsusestd::ffi::CStr;#[no_mangle]pubexternfnreturn_string(test_str:&CStr)->&CStr{  //workingfunciton  tes

ruby字符串生rust并再次返回

Rubystringtorustandbackagain我正在尝试将Ruby中的字符串传递给rust可执行文件,对其进行操作并将被操作的字符串传回。到目前为止,我可以将字符串传入并返回,但我不知道如何将其转换为rust字符串,对其进行操作,然后将其传递回ruby??。这是我到目前为止所拥有的:1234567891011121314151617181920212223242526//lib.rsusestd::ffi::CStr;#[no_mangle]pubexternfnreturn_string(test_str:&CStr)->&CStr{  //workingfunciton  tes

关于 rust:Serde 在反序列化嵌套的 JSON 结构时返回 SyntaxError “expected value”

SerdereturnsaSyntaxError"expectedvalue"whendeserializingnestedJSONstructs我正在尝试从WebAPI(规范)反序列化Spotify元数据JSON。我正在使用hyper从服务器中检索JSON,并使用serde将JSON转换为我可以在Rust中实际使用的东西。从服务器检索JSON就好了,但是当我尝试将JSON转换为可以使用的对象时,Rustpanic并抛出错误:1thread''panickedat'called'Result::unwrap()'onan'Err'value:SyntaxError("expectedvalue