DioxusLabs/taffy

Rustで書かれた高性能なUI レイアウトライブラリ。Flexbox、CSS Grid、ブロックレイアウトに対応しています。

開発の材料要確認 · NOASSERTIONデザイン・UI コンポーネントRust難易度
3,6040 保存
234フォーク76Issue
デモ・公式サイトをひらくdocs.rs

中辛 の解説

Rustで実装されたUIレイアウトエンジンです。Flexbox、CSS Grid、ブロックレイアウトアルゴリズムをサポートしており、Servo、Bevy、Lapce、Zedなどの主要プロジェクトで採用されています。ベンチマーク結果ではYogaと比べて多くのシナリオで同等またはそれ以上のパフォーマンスを発揮します。ノード数100,000のテストケースで約38~63ms の計算時間です。すぐに使える実装例がREADMEに含まれており、Pythonなどの言語バインディングも開発中です。

こんなリポジトリです

こんなときに便利です

  • Bevyなどのゲームエンジンでゲーム内UIのレイアウトを計算する場合
  • Lapce、Zedなどのテキストエディタのエディタパネル配置を処理する場合
  • ServoやBlitzなどのウェブエンジンにCSSレイアウト機能を提供する場合

主な機能

Flexbox、CSS Grid、ブロックレイアウトアルゴリズムの実装複数の言語にバインディング可能な設計Yogaと比較して深いツリーレイアウトで高速化

ほかとの違い

複数のプロジェクト(Bevy、Servo、Lapce、Zedなど)で広く採用されており、CSS仕様への準拠度が高く、深いツリー構造で特に最適化されています。

このリポジトリの作り方

はじめてですか? むずかしくありません — 上から順にたどれば、自分の環境で動かして味見できます。

準備するもの

  • Rust(1.70以上推奨)

すぐに始める

  1. Cargoプロジェクトにtaffyを追加します。
cargo add taffy
  1. TaffyTreeインスタンスを作成します。
use taffy::prelude::*;

let mut tree: TaffyTree<()> = TaffyTree::new();
  1. Styleを指定してノードを作成します。
let header_node = tree
    .new_leaf(
        Style {
            size: Size { width: length(800.0), height: length(100.0) },
            ..Default::default()
        },
    ).unwrap();
  1. 子ノードを含む親ノードを作成します。
let root_node = tree
    .new_with_children(
        Style {
            flex_direction: FlexDirection::Column,
            size: Size { width: length(800.0), height: length(600.0) },
            ..Default::default()
        },
        &[header_node, body_node],
    )
    .unwrap();
  1. レイアウト計算を実行します。
tree.compute_layout(root_node, Size::MAX_CONTENT).unwrap();
  1. 計算されたレイアウト情報を取得します。
let layout = tree.layout(root_node).unwrap();
println!("Width: {}, Height: {}", layout.size.width, layout.size.height);

ギット飯トライで味見

入れるのが面倒で少し不安だったなら — 安全スキャンからインストールまで、ターミナル一行で終わります。

ターミナルに貼り付ければ、ギット飯の安全スキャン → 隔離フォルダへ clone → インストール → 実行方法の案内まで自動です。はじめてでも大丈夫 — この一行だけです。

npx gitbap-try DioxusLabs/taffy

Node.js さえあれば、インストールなしで動きます · ギット飯トライとは? →

スター推移 · 7日

3,6047日間の増加数を計算するための比較データが不足しています

確認日時

使いやすさ · まねしやすいか

まねしやすいサンプル評点 48/100
  • ゆるいライセンス
  • テストあり
  • サンプル集
  • 最近の更新
  • AGENTS.md
  • llms.txt
  • テンプレート

最近の更新あり · 2022 年に作成

「デザイン・UI コンポーネント」 こういうリポジトリを毎週受け取りませんか?

毎週月曜の朝、選んだ一膳だけ。広告なし · いつでも解除。

自分のリポジトリですか? README にギット飯バッジを貼る
[![깃밥](https://www.gitbap.com/badge/DioxusLabs/taffy.svg)](https://www.gitbap.com/r/DioxusLabs/taffy)
Claude からそのまま使う — ギット飯のつなぎ方

ギット飯を Claude につなぐと、こうしたリポジトリを Claude・Cursor・Codex から直接さがして試せます。

方法 ① コネクタ URL

Claude の設定 → コネクタにこのアドレスを貼り付け。

https://www.gitbap.com/api/mcp
方法 ② プラグイン(試用まで)

プラグインを入れると /gitbap-trending·/gitbap-try のスラッシュコマンドで、その場でリポジトリを試せます。Claude Code で下の 2 行を順に実行してください。

/plugin marketplace add jakeparkcolde/gitbap-cowork
/plugin install gitbap-cowork@gitbap
つなぎ方をくわしく →

AI が README をもとに要約しました · 原文を見る