#layout #flex #yoga #ffi

sys yoga-sys

为 yoga (Facebook Flex 布局跨平台引擎) 提供原始 Rust 绑定

5 个版本

使用旧的 Rust 2015

0.2.3 2017年11月23日
0.2.2 2017年10月19日
0.2.1 2017年10月19日
0.2.0 2017年9月25日
0.1.0 2017年5月23日

#42 in 渲染引擎

BSD-3-Clause

200KB
4K SLoC

C++ 3K SLoC // 0.1% comments Rust 1K SLoC Shell 10 SLoC

yoga-sys 构建状态构建状态

为 yoga 提供原始 Rust 绑定。

免责声明:这些绑定不是由任何 Facebook 维护者提供的,因此可能包含额外的错误。

入门

添加到你的 Cargo.toml

[dependencies]
yoga-sys = "0.2.3"

在你的 main.rslib.rs 文件中添加

extern crate yoga_sys;

示例

以下是一个示例,你可以在这里找到这里,使用此 crate 将其转换为 rust

extern crate yoga_sys;

use yoga_sys::*;

fn main() {
    unsafe {
        let root = YGNodeNew();
        YGNodeStyleSetWidth(root, 500.);
        YGNodeStyleSetHeight(root, 120.);
        YGNodeStyleSetFlexDirection(root, YGFlexDirection::YGFlexDirectionRow);
        YGNodeStyleSetPadding(root, YGEdge::YGEdgeAll, 20.);

        let image = YGNodeNew();
        YGNodeStyleSetWidth(image, 80.);
        YGNodeStyleSetMargin(image, YGEdge::YGEdgeEnd, 20.);

        let text = YGNodeNew();
        YGNodeStyleSetHeight(text, 25.);
        YGNodeStyleSetAlignSelf(text, YGAlign::YGAlignCenter);
        YGNodeStyleSetFlexGrow(text, 1.);

        YGNodeInsertChild(root, image, 0);
        YGNodeInsertChild(root, text, 1);

        YGNodeFreeRecursive(root);
    }
}

依赖项

~0–1.5MB
~21K SLoC