1.RUST 学习日记 第3课 ——IDE
2.Android如何支持Rust程序
3.有什么推荐的下载开源游戏代码?
4.rust文件是什么意思?
5.WasmEdge Rust SDK 发布新版
6.Rust语言基础(一)rustup工具
RUST 学习日记 第3课 ——IDE
上一节内容中,我们了解了如何使用Cargo来构建Rust项目。源码源码在实际生产环境中,安装Cargo是下载构建复杂程序的首选工具。在接下来的源码源码学习中,所有代码的安装kis源码构建将通过Cargo进行。
Visual Studio Code是下载一款强大的跨平台编辑器,拥有丰富的源码源码插件资源。我们可以通过下载并打开Visual Studio Code,安装搜索并安装rust插件来开始Rust编程。下载安装完成后,源码源码新建或打开一个文件夹,安装例如"D:/StudyRust/"。下载在终端执行创建项目的源码源码命令,Cargo将在此目录下生成Rust项目。安装执行和调试Rust程序可以通过Visual Studio Code自带的功能完成,需要额外安装Native Debug插件。
IDEA社区版提供了免费的开发环境,适用于Rust编程。CLion是基于IDEA的C++开发工具,但收费。CLion或IDEA的操作流程相似,安装Rust插件后,创建项目并选择合适的toolchain,如MSVC或MinGW。选择IDE根据个人喜好和需求即可,无需过多考虑。
在选择IDE时,考虑其功能和便捷性。对于初学者,Visual Studio Code已足够;若想深入学习,专业IDE如CLion可能更适合。调试程序时,可以在代码中设置断点,使用调试工具如LLDB进行单步执行和查看变量值。通过调试,可以更好地理解程序运行逻辑。
本文将通过CLion进行后续代码演示,但Visual Studio Code同样支持Rust编程。选择IDE基于个人习惯和需求,振幅高低指标源码不必过于关注他人的意见。本节代码示例和调试流程可参考项目源码。下节预告将介绍Rust的常用规范,以帮助大家更好地掌握语言特性。
Android如何支持Rust程序
Android系统已经引入Rust语言,作为Android系统工程师,掌握Rust语言成为必备技能。Rust语言因其在近几年的热度,值得重点关注。
在Android平台下,Rust语言的编译流程通过rustc编译器实现。该编译器前端使用Rust语言编写,将源代码转换为LLVM IR,随后利用LLVM框架编译为目标代码。
Android的编译器集成路径为:prebuilts/rust/,而编译器的版本则在build/soong/rust/config/global.go中配置。
集成的构建系统代码位于build/soong/rust/,它支持多种构建模块类型,为Rust程序的构建提供了便利。
在Android平台,Rust语言的基础库主要通过集成静态库(以*.rlib结尾)和动态库(.dylib.so结尾)实现。这些库是Rust程序运行所必需的最小基础库。
Android平台下Rust语言的主要应用模块和集成的开源库提供了丰富的功能,满足不同需求。
此外,Rust程序在Android平台下支持dwarf格式,可以使用gdb、objdump等工具进行调试。代码的格式化处理也得到了支持。
有什么推荐的开源游戏代码?
探索GitHub游戏区,发现众多优秀开源游戏项目,本文推荐以下五款游戏,均支持中文,适配Windows、Linux、macOS系统。
1. Wesnoth(韦诺之战):免费开源的回合制策略游戏,背景为夺回韦诺的王位,提供丰富地图、养鸡农场app源码兵种和种族,支持DIY地图和在线多人战役,玩法自由度高。缺点是攻击命中概率低,可能引起玩家血压上升。
下载:wesnoth.org
C++源码:github.com/wesnoth/wesn...
2. Teeworlds:复古多人在线射击游戏,以卡通画面、简单物理引擎和经典兵器为特色,支持最多名玩家对战,提供单人、团队、夺旗等竞赛模式。游戏刺激,考验操作。
下载:teeworlds.com
C++源码:github.com/teeworlds/te...
3. Mindustry(像素工厂):资源为核心的战略沙盒游戏,通过收集资源升级科技,解锁武器,保护基地,支持Android设备。游戏上手容易,但难度逐渐增加,容易让人沉迷。
下载:mindustrygame.github.io...
Java源码:github.com/Anuken/Mindu...
4. shapez.io(异形工厂):益智类游戏,目标是通过建造工厂生产图形,操作简单,随着关卡深入难度增加,挑战性大。
在线试玩:shapez.io
JS源码:github.com/tobspr/shape...
5. Veloren:独立像素风格RPG游戏,灵感来源于《塞尔达传说:旷野之息》等,玩家可以制作道具、合成物品、战斗升级、驯养生物,探索地牢洞穴,进行空中滑翔,与NPC交易。游戏拥有广阔开放世界,素材和音乐原创,维护时间长。开源免签源码
下载:veloren.net/download
Rust源码:github.com/veloren/velo...
这次探索GitHub游戏区,发现开源游戏项目不仅玩法丰富,而且维护时间长,经过时间打磨,愈发珍贵和经典,展现了开源精神的卓越价值。
rust文件是什么意思?
Rust文件是一种源代码文件,其扩展名为.rs。这种文件通常包含Rust程序的源代码,可以被编译器用来生成可执行文件。Rust是一种新型的编程语言,其特点是安全、并发和高效。因此,其代码文件也有着类似的特点。
Rust文件通常包含了多个模块和函数,这些模块和函数结构严密,代码风格简洁明了,非常适合大型项目的开发。通过良好的代码组织和命名规则,Rust文件可以让开发者在日后的维护和修改中更加便捷。
Rust文件也可以通过Cargo管理工具来进行创建、编译、测试和发布。这种工具能够自动化项目管理,简化开发者的工作流程,提高开发的效率。通过Rust文件和Cargo,开发者可以更加专注于代码的实现,而不必关注过多的底层细节。
WasmEdge Rust SDK 发布新版
随着WasmEdge 0..1的发布,WasmEdge Rust SDK的全新版本—wasmedge-sdk v0.2.0和wasmedge-sys v0.8.0—也已上线。查阅API文档和源代码,请访问官方页面。
下面展示WasmEdge Rust SDK架构图,wasmedge-sys crate提供一组简单且安全的低级Rust API,而wasmedge-sdk则围绕应用程序定义一组高级API。
建议大多数应用开发者使用wasmedge-sdk crate。本文将重点介绍如何使用wasmedge-sdk。idea 看源码 技巧如有兴趣了解WasmEdge低级Rust API内部,可查阅wasmedge-sys源代码。
WasmEdge Rust SDK使Rust应用程序能够嵌入WebAssembly函数或模块,尤其对于基于Rust的云原生或区块链基础设施软件来说,这是实现安全有效集成外部代码的关键。
wasmedge-sdk的主要设计目标是为开发者提供简单且安全的方式将第三方代码无缝整合进Rust应用,旨在为Rust开发者提供流畅的体验。
下面,我们将通过一个简单的例子展示如何使用wasmedge-sdk。
以下代码展示了如何通过Rust程序运行WasmEdge host函数。该函数用Rust编写,同样支持C、TinyGo或JavaScript等其他编程语言。
接下来,我们以一个简单的"Hello, World!"程序为例,演示如何使用wasmedge-sdk加载外部代码。此示例包含以下步骤:
1. 通过ImportObjectBuilder加载第三方native函数
2. 加载native函数生成的Wasm模块
了解更多示例,请查看官方文档。
确保在本地系统上安装Rust和WasmEdge,Linux为唯一支持的操作系统,若使用WasmEdge的WasmEdgeProcess插件。
从WasmEdge repo下载wasmedge-sdk示例。
使用命令行从wasmedge-sdk文件运行"Hello, World!"示例。
成功运行后,终端将输出"Hello, World!"。
让我们深入研究代码。"Hello, World!"示例的源代码可在此处获取。
首先定义一个名为say_hello_world的native函数。
使用ImportObjectBuilder加载import模块,并创建ImportObject。
加载Wasm模块并注册import模块。
注册编译好的Wasm模块。
执行导出的函数。
未来展望,wasmedge-sdk将支持嵌入式Wasm和异步host函数的异步调用,以及复杂接口类型,方便开发者传递复杂数据结构。
欢迎社区参与wasmedge-sdk的开发,期待您的反馈。查看参与规则,参与贡献将获得礼物作为感谢。
Rust语言基础(一)rustup工具
探索Rust语言的基础:深入理解rustup工具 rustup,Rust语言的强大伴侣,是专为管理Rust版本和相关工具而设计的命令行神器。它不仅是安装和更新Rust环境的关键,更是构建和管理项目中不可或缺的组件管理工具。 rustup的职责 安装在你的系统中的rustup,会悄悄地将rustc、cargo和rustup等核心工具安放到位。它们将被安置在$HOME/.cargo/bin路径下,这个路径会被自动添加到环境变量中,使得你无需记忆,只需简单地调用即可使用。 组件的盛宴 当rustup安装完毕,你将拥有一个丰富的工具库,其中包括:rustc:Rust编程语言的编译器,负责将源代码转化为可执行的程序。
rustdoc:文档生成工具,为Rust项目提供详尽的文档支持。
cargo:Rust的包管理器,管理项目的依赖和构建过程。
以及一系列调试辅助工具,如rust-lldb、rust-gdb等,为代码调试带来便捷。
通过rustup toolchain link,你可以根据项目需求灵活地链接和切换不同版本的工具链,如nightly、beta和stable。 版本的世界 nightly是开发中的最新版本,beta则用于测试新特性,每6周更新一次,而stable则代表稳定和成熟,每6周从beta版推出。通过rust-toolchain.toml,你可以为项目绑定特定版本,确保一致性。 定制你的编译环境 rustup允许你根据项目需求选择组件,如minimal、default和complete。minimal是最基础的设置,而default则添加了文档生成和格式化工具,适合大多数项目。complete则应谨慎使用,因为它可能会带来不必要的问题。 扩展平台与源码获取 对于跨平台编译,只需简单地添加目标平台,如rustup target add arm-linux-androideabi。获取Rust源码,则通过rustup component add rust-src命令,源码会被下载到对应工具链的lib/rustlib/src/rust目录。 总的来说,rustup是Rust开发者的一把瑞士军刀,它以简洁的命令行接口,帮助你高效地管理Rust的版本、组件和平台,为你的Rust之旅提供强大的支持。RUST语言mingw-开发环境安装和设置
在Windows环境下,想要为RUST语言创建mingw-开发环境,首先需要访问rust官方网站下载rustup工具。rustup是RUST环境设置的关键,它会自动管理安装过程,包括cargo和相关文档等。 下载后,当你启动rustup时,可能会遇到需要链接器和Windows API库的提示。这里有三种解决方案:通过Visual Studio Community安装(免费,适用于个人、学术和开源项目)
手动安装必要的预设条件(适合企业级和高级用户)
不安装预设条件(如果你的目标是GNU ABI)
对于Windows开发,可能需要安装C++ Build Tools,这通常与Visual Studio捆绑。然而,Visual Studio安装包很大,下载速度不稳定。对于配置较低或不希望下载大量文件的用户,可以选择不安装预设条件,转而使用mingw-w,它是一个GCC的Windows版本,源码可以从sourceforge.net下载大约MB的x_-win-seh版本。 安装mingw-后,需要在系统环境变量中添加其bin目录。具体操作是,打开“此电脑”属性,进入高级系统设置,修改PATH变量。输入mingw安装路径,如C:\mingw\bin,然后确认。 验证安装成功的方法是在命令提示符中输入gcc -v。如果看到输出,说明mingw-已安装。接下来,在rustup中选择自定义安装(2),设置默认主机三联(x_-pc-windows-gnu),工具链选择稳定版,设置默认配置,并允许修改PATH。 等待rustup完成下载和安装,最后在命令提示符中输入rustc -V,确认RUST已成功安装。接下来安装VSCode,作为代码编辑器。安装完成后,创建一个新的RUST项目并在VSCode中运行它,可能需要下载并安装codeLLDB插件以支持调试功能。在树莓派RP上用Rust驱动ST
本文详述在树莓派RP上使用Rust驱动ST的实践过程,旨在记录使用最新库版本的成功经验,简化开发流程。
参考源码地址:st-lcd-examples/rp-examples at master · sajattack/st-lcd-examples
完整的代码位于:github.com/planet/r...
使用步骤如下:
1、安装工具:确保安装最新版的Rust以及相应的开发环境。
2、硬件连接:根据RP开发板的引脚图,正确连接ST显示屏。
3、Cargo.toml:配置此文件,引入st库和相关依赖。
4、main.rs:在此文件中编写主要逻辑,初始化屏幕并显示内容。
5、build.rs:用于自定义构建步骤,可能包括生成额外的可执行文件。
6、memory.x:用于配置RAM布局,确保屏幕驱动代码能够正确运行。
7、.cargo/config.toml:配置个人和项目特定的设置,如Rust工具链路径。
8、运行:通过USB将RP接入电脑,终端执行“cargo run”命令即可启动程序。
Rust Async: smol源码分析-Executor篇
本文深入探讨了smol异步运行时中的Executor组件,尤其关注了Executor的实现细节。在smol的异步框架中,Executor扮演了核心角色,主要负责执行Future,并在多线程环境中调度和管理任务。
Executor分为三种类型:ThreadLocalExecutor、Blocking Executor、Work Stealing Executor。ThreadLocalExecutor用于处理不能实现Send特性的Future,通过使用并发和非并发队列,减少了跨线程的同步开销。Blocking Executor则允许执行阻塞任务,并通过动态地开启线程来应对任务的增加,从而提高了资源的利用率。Work Stealing Executor则通过工作窃取的方式,实现了线程间的任务负载均衡,每个工作线程通过主动调用smol::run加入工作环境。
在Executor的实现中,ThreadLocalExecutor通过线程局部变量来管理任务的生命周期,确保了任务与线程的绑定。Blocking Executor通过自适应地开启线程,以应对任务的增加或减少,从而保持了系统的高效运行。Work Stealing Executor通过工作窃取的方式,实现了任务在多个线程间的合理分配,提高了系统的整体性能。
每一个Executor的实现都紧密围绕着任务的调度、执行和管理,通过不同策略满足了不同场景下的需求。ThreadLocalExecutor适用于无法实现Send特性的Future,Blocking Executor能够应对阻塞任务的执行,而Work Stealing Executor则通过动态负载均衡实现了任务的高效分配。
在使用smol异步运行时时,需要注意到几个关键点。async_std的运行时采用了延迟实例化、按需自动启动的策略,简化了使用体验。然而,smol目前采用的是手动启用运行时的策略,可能导致运行时panic问题,用户需要额外的配置来启动整个工作窃取运行环境。因此,正确配置和启动smol运行时对于开发者来说是至关重要的。
总结而言,smol的Executor组件设计精妙,通过不同类型的Executor满足了多样化的异步任务需求。其简洁而高效的设计,使得开发者能够轻松地将现有的库进行异步化处理,极大地提高了开发效率和系统性能。未来,随着smol的发展和完善,其在异步编程领域的应用将更加广泛。