< 返回版块

ChaosBot 发表于 2018-08-07 10:43

Tags:rustnews

数据驱动游戏引擎Amethyst 发布0.8

发布了新的指南,以及巨量新特性

该引擎特色:

  • 使用gfx-rs渲染OpenGL图形,支持2D和3D,不久会支持Vulkan和Metal

  • 使用严格的Entity Component System (ECS)架构来组织游戏逻辑。可能是世界上最快的ECS,无运行时反射,可以毫不费力地处理数百万个组件

  • 跨平台,当前支持Windows/Linux/Mac,马上会支持iOS和Android

  • 原文

  • 官网


ripgrep已经登录debian平台

原文


卖个萌

img


Diesel使用案例:自定义类型

在Diesel自定义Bool 类型,并通过Serde序列化和反序列化

作者遇到一个需求:

数据库中有一个字段published,表示发布状态,最早的时候该字段为bool类型,只有true和false两种状态。现在他想扩展发布状态为三种情况: 已发布、未发布和待定。 有三种方案可以解决:

  1. 数据库中创建三个枚举
  2. 数据库中published改成varchar类型,记录三种值
  3. 数据库中继续保留published为bool类型,未发布和待定状态用false表示,已发布用true表示

作者选了第3种方式,因为待定状态其实并不需要持久化到数据库,放到内存中就可以。所以Rust中就可以使用enum来表示了

#[derive(Debug,PartialEq,AsExpression,Clone,Serialize)]
#[sql_type = "Bool"]
pub enum PublishState
{
    Published,
    Unpublished,
    Pending,
}

使用 #[sql_type = "Bool"] 告诉diesel期待的数据类型,再为PublishState实现了ToSql,就可以将PublishState序列化为Bool类型.

impl ToSql<Bool, Pg> for PublishState {
    fn to_sql<W: std::io::Write>(&self, out: &mut Output<W, Pg>) -> ::diesel::serialize::Result {
        match self {
            &PublishState::Published => ToSql::<Bool, Pg>::to_sql(&true, out),
            &PublishState::Unpublished | &PublishState::Pending =>  ToSql::<Bool, Pg>::to_sql(&false, out)
        }
    }
}

然后还得实现FromSql将该数据库的值反序列化为PublishState,反序列化只需要已发布和未发布两种状态即可

原文


Rust在Haiku操作系统的状态介绍

Haiku操作系统非Lunix内核,而是BeOS的延续,发展将近20年了,没想到还活着(逃)

竟然对Rust支持不错,通过HaikuPorts可以直接获取Rust 1.27

未来Haiku核心成员还将打算使用Rust实现操作系统的一些API

题外话:

Haiku操作系统的日志号称是充满了诗意,大量日志信息使用俳句的形式:

Sites you are seeking From your path they are fleeing Their winter has come.

译文:

君所觅之站 正循君之所迹离失 恐已入休眠之季

原文


Rust模块5分钟指南

原文


学习Rust系列:实现一个ls工具

原文


使用任意OS为ARM交叉编译的方法

原文


magattozzi正在为RustConf 2018 准备async-await培训的PPT

可以关注一下这个仓库,目前只是个模板

async-await


评论区

写评论

还没有评论

1 共 0 条评论, 1 页