Gpui use readme as docs (#39966)
Removes the duplication between `gui.rs` doc comments and the `README.md` file. Release Notes: - N/A
This commit is contained in:
@@ -11,6 +11,8 @@ GPUI is still in active development as we work on the Zed code editor, and is st
|
||||
gpui = { version = "*" }
|
||||
```
|
||||
|
||||
- [Ownership and data flow](_ownership_and_data_flow)
|
||||
|
||||
Everything in GPUI starts with an `Application`. You can create one with `Application::new()`, and kick off your application by passing a callback to `Application::run()`. Inside this callback, you can create a new window with `App::open_window()`, and register your first root view. See [gpui.rs](https://www.gpui.rs/) for a complete example.
|
||||
|
||||
### Dependencies
|
||||
|
||||
+1
-64
@@ -1,67 +1,4 @@
|
||||
//! # Welcome to GPUI!
|
||||
//!
|
||||
//! GPUI is a hybrid immediate and retained mode, GPU accelerated, UI framework
|
||||
//! for Rust, designed to support a wide variety of applications.
|
||||
//!
|
||||
//! ## Getting Started
|
||||
//!
|
||||
//! GPUI is still in active development as we work on the Zed code editor and isn't yet on crates.io.
|
||||
//! You'll also need to use the latest version of stable rust. Add the following to your Cargo.toml:
|
||||
//!
|
||||
//! ```toml
|
||||
//! [dependencies]
|
||||
//! gpui = { git = "https://github.com/zed-industries/zed" }
|
||||
//! ```
|
||||
//!
|
||||
//! - [Ownership and data flow](_ownership_and_data_flow)
|
||||
//!
|
||||
//! Everything in GPUI starts with an [`Application`]. You can create one with [`Application::new`], and
|
||||
//! kick off your application by passing a callback to [`Application::run`]. Inside this callback,
|
||||
//! you can create a new window with [`App::open_window`], and register your first root
|
||||
//! view. See [gpui.rs](https://www.gpui.rs/) for a complete example.
|
||||
//!
|
||||
//! ## The Big Picture
|
||||
//!
|
||||
//! GPUI offers three different [registers](https://en.wikipedia.org/wiki/Register_(sociolinguistics)) depending on your needs:
|
||||
//!
|
||||
//! - State management and communication with [`Entity`]'s. Whenever you need to store application state
|
||||
//! that communicates between different parts of your application, you'll want to use GPUI's
|
||||
//! entities. Entities are owned by GPUI and are only accessible through an owned smart pointer
|
||||
//! similar to an [`std::rc::Rc`]. See [`app::Context`] for more information.
|
||||
//!
|
||||
//! - High level, declarative UI with views. All UI in GPUI starts with a view. A view is simply
|
||||
//! a [`Entity`] that can be rendered, by implementing the [`Render`] trait. At the start of each frame, GPUI
|
||||
//! will call this render method on the root view of a given window. Views build a tree of
|
||||
//! [`Element`]s, lay them out and style them with a tailwind-style API, and then give them to
|
||||
//! GPUI to turn into pixels. See the [`elements::Div`] element for an all purpose swiss-army
|
||||
//! knife for UI.
|
||||
//!
|
||||
//! - Low level, imperative UI with Elements. Elements are the building blocks of UI in GPUI, and they
|
||||
//! provide a nice wrapper around an imperative API that provides as much flexibility and control as
|
||||
//! you need. Elements have total control over how they and their child elements are rendered and
|
||||
//! can be used for making efficient views into large lists, implement custom layouting for a code editor,
|
||||
//! and anything else you can think of. See the [`elements`] module for more information.
|
||||
//!
|
||||
//! Each of these registers has one or more corresponding contexts that can be accessed from all GPUI services.
|
||||
//! This context is your main interface to GPUI, and is used extensively throughout the framework.
|
||||
//!
|
||||
//! ## Other Resources
|
||||
//!
|
||||
//! In addition to the systems above, GPUI provides a range of smaller services that are useful for building
|
||||
//! complex applications:
|
||||
//!
|
||||
//! - Actions are user-defined structs that are used for converting keystrokes into logical operations in your UI.
|
||||
//! Use this for implementing keyboard shortcuts, such as cmd-q (See `action` module for more information).
|
||||
//! - Platform services, such as `quit the app` or `open a URL` are available as methods on the [`app::App`].
|
||||
//! - An async executor that is integrated with the platform's event loop. See the [`executor`] module for more information.,
|
||||
//! - The [`gpui::test`](macro@test) macro provides a convenient way to write tests for your GPUI applications. Tests also have their
|
||||
//! own kind of context, a [`TestAppContext`] which provides ways of simulating common platform input. See [`TestAppContext`]
|
||||
//! and [`mod@test`] modules for more details.
|
||||
//!
|
||||
//! Currently, the best way to learn about these APIs is to read the Zed source code, ask us about it at a fireside hack, or drop
|
||||
//! a question in the [Zed Discord](https://zed.dev/community-links). We're working on improving the documentation, creating more examples,
|
||||
//! and will be publishing more guides to GPUI on our [blog](https://zed.dev/blog).
|
||||
|
||||
#![doc = include_str!("../README.md")]
|
||||
#![deny(missing_docs)]
|
||||
#![allow(clippy::type_complexity)] // Not useful, GPUI makes heavy use of callbacks
|
||||
#![allow(clippy::collapsible_else_if)] // False positives in platform specific code
|
||||
|
||||
Reference in New Issue
Block a user