diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dac81ee1a00..0473e57de37 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -345,7 +345,7 @@ jobs: - name: Install cargo-public-api run: cargo install cargo-public-api --locked - name: Regenerate public API lock files - run: bash scripts/public-api.sh + run: cargo run -p lockfiles - name: Verify lock files are up to date run: | git diff --name-only diff --git a/Cargo.lock b/Cargo.lock index c00df532bb2..a263866015e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1420,6 +1420,39 @@ dependencies = [ "libbz2-rs-sys", ] +[[package]] +name = "camino" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87a0c0e6148f11f01f32650a2ea02d532b2ad4e81d8bd41e6e565b5adc5e6082" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "cargo_metadata" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 2.0.18", +] + [[package]] name = "cast" version = "0.3.0" @@ -1790,7 +1823,7 @@ dependencies = [ "bytes", "clap", "futures", - "indicatif", + "indicatif 0.18.3", "itertools 0.14.0", "lance-bench", "parquet", @@ -1847,6 +1880,7 @@ dependencies = [ "encode_unicode", "libc", "once_cell", + "unicode-width 0.2.2", "windows-sys 0.59.0", ] @@ -3603,7 +3637,7 @@ dependencies = [ "datafusion-substrait", "futures", "half", - "indicatif", + "indicatif 0.18.3", "itertools 0.14.0", "log", "object_store", @@ -5105,6 +5139,20 @@ dependencies = [ "hashbrown 0.16.1", ] +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console 0.15.11", + "number_prefix", + "portable-atomic", + "rayon", + "unicode-width 0.2.2", + "web-time", +] + [[package]] name = "indicatif" version = "0.18.3" @@ -6159,6 +6207,15 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "lockfiles" +version = "0.1.0" +dependencies = [ + "cargo_metadata", + "indicatif 0.17.11", + "rayon", +] + [[package]] name = "log" version = "0.4.29" @@ -6770,6 +6827,12 @@ dependencies = [ "libc", ] +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + [[package]] name = "objc2-core-foundation" version = "0.3.2" @@ -8115,7 +8178,7 @@ dependencies = [ "anyhow", "async-trait", "clap", - "indicatif", + "indicatif 0.18.3", "lance-bench", "rand 0.9.2", "rand_distr 0.5.1", @@ -10762,7 +10825,7 @@ dependencies = [ "get_dir", "glob", "humansize", - "indicatif", + "indicatif 0.18.3", "itertools 0.14.0", "mimalloc", "noodles-bgzf", @@ -11575,7 +11638,7 @@ dependencies = [ "datafusion 52.1.0", "datafusion-sqllogictest", "futures", - "indicatif", + "indicatif 0.18.3", "sqllogictest", "tempfile", "thiserror 2.0.18", @@ -11624,7 +11687,7 @@ dependencies = [ "futures", "fuzzy-matcher", "humansize", - "indicatif", + "indicatif 0.18.3", "itertools 0.14.0", "parquet", "ratatui", diff --git a/Cargo.toml b/Cargo.toml index 66f9b6e1b87..ca6b3247ec9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,7 +56,7 @@ members = [ "benchmarks/datafusion-bench", "benchmarks/duckdb-bench", "benchmarks/random-access-bench", - "vortex-sqllogictest", + "vortex-sqllogictest", "lockfiles", ] exclude = ["java/testfiles", "wasm-test"] resolver = "2" diff --git a/lockfiles/Cargo.toml b/lockfiles/Cargo.toml new file mode 100644 index 00000000000..b14512c6f16 --- /dev/null +++ b/lockfiles/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "lockfiles" +description = "Build lockfiles for all workspace projects" +publish = false +authors.workspace = true +categories.workspace = true +edition.workspace = true +homepage.workspace = true +include.workspace = true +keywords.workspace = true +license.workspace = true +readme.workspace = true +repository.workspace = true +rust-version.workspace = true +version.workspace = true + +[dependencies] +cargo_metadata = "0.23" +indicatif = { version = "0.17", features = ["rayon"] } +rayon = "1" + +[lints] +workspace = true diff --git a/lockfiles/src/main.rs b/lockfiles/src/main.rs new file mode 100644 index 00000000000..c4bc7642030 --- /dev/null +++ b/lockfiles/src/main.rs @@ -0,0 +1,94 @@ +#![allow(clippy::expect_used)] + +use std::fs::File; +use std::io::Write; +use std::process::Command; + +use cargo_metadata::MetadataCommand; +use cargo_metadata::Package; +use cargo_metadata::PackageName; +use cargo_metadata::camino::Utf8PathBuf; +use indicatif::ParallelProgressIterator; +use indicatif::ProgressBar; +use indicatif::ProgressStyle; +use rayon::prelude::*; + +pub fn main() { + let metadata = MetadataCommand::new() + .no_deps() + .exec() + .expect("cargo metadata"); + + let published: Vec<_> = metadata + .workspace_packages() + .into_iter() + .filter(|v| is_published(v)) + // Only keep crates that publish Rust libs + .filter(|p| p.targets.iter().any(|target| target.is_lib())) + .collect(); + + // Skip binary packages + + let progress = ProgressBar::new(published.len() as u64); + progress.set_style( + ProgressStyle::default_bar() + .template("{spinner:.green} [{bar:40.cyan/blue}] {pos}/{len} ({eta}) {msg}") + .expect("valid template") + .progress_chars("=>-"), + ); + + published + .par_iter() + .progress_with(progress) + .for_each(|pkg| { + let job = LockfileJob { + name: pkg.name.clone(), + manifest_path: pkg.manifest_path.clone(), + }; + + job.execute().expect("lockfile"); + }); +} + +struct LockfileJob { + name: PackageName, + manifest_path: Utf8PathBuf, +} + +impl LockfileJob { + fn execute(self) -> std::io::Result<()> { + let LockfileJob { + name, + manifest_path, + } = self; + + let lockfile_path = manifest_path.with_file_name("public-api.lock"); + + let mut cmd = Command::new("cargo"); + let output = cmd + .arg("+nightly") + .arg("public-api") + .arg("--manifest-path") + .arg(manifest_path) + .args(["--omit", "blanket-impls,auto-trait-impls"]) + .output()?; + + if !output.status.success() { + eprintln!( + "FAILED: {name}:\n===============\n\n{}\n\n===============\n\n", + String::from_utf8_lossy(&output.stdout) + ); + + return Err(std::io::Error::other("failed to execute")); + } + + // Write lockfile contents + File::create(&lockfile_path)?.write_all(&output.stdout)?; + + Ok(()) + } +} + +fn is_published(pkg: &Package) -> bool { + pkg.publish.as_ref().map(|v| !v.is_empty()).unwrap_or(true) +} diff --git a/scripts/public-api.sh b/scripts/public-api.sh deleted file mode 100755 index d5fdc68e147..00000000000 --- a/scripts/public-api.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: Apache-2.0 -# SPDX-FileCopyrightText: Copyright the Vortex contributors - -set -Eeu -o pipefail - -# Regenerate public-api.lock files for all published crates. -# Uses cargo-public-api to dump the public API surface of each crate. -# -# Usage: -# bash scripts/public-api.sh # regenerate all lock files -# cargo +nightly public-api -p -ss > /public-api.lock # single crate - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" - -# Extract published crate lines from Cargo.toml between BEGIN/END markers. -# Each line looks like: -# vortex-alp = { version = "0.1.0", path = "./encodings/alp", ... } -# Build parallel arrays of crate names and paths. -crate_names=() -crate_paths=() -pkg_flags=() -while IFS= read -r line; do - name=$(echo "$line" | sed 's/ *=.*//') - path=$(echo "$line" | sed 's/.*path *= *"\([^"]*\)".*/\1/') - path="${path#./}" - crate_names+=("$name") - crate_paths+=("$path") - pkg_flags+=("-p" "$name") -done < <(sed -n '/^# BEGIN crates published/,/^# END crates published/{ /^#/d; /^$/d; p; }' "$REPO_ROOT/Cargo.toml") - -echo "Found ${#crate_names[@]} published crates." - -# Step 1: Pre-build all crates in one cargo invocation so dependencies are compiled -# in parallel using cargo's built-in parallelism. -echo "Pre-building all crates..." -cargo +nightly check "${pkg_flags[@]}" - -# Step 2: Generate public-api.lock files in parallel. -# Each invocation only needs to run rustdoc on a single (already-compiled) crate. -if command -v parallel &>/dev/null; then - echo "Generating public API lock files in parallel..." - export REPO_ROOT - parallel --bar \ - 'cargo +nightly public-api -p {1} -ss > "$REPO_ROOT/{2}/public-api.lock"' \ - ::: "${crate_names[@]}" :::+ "${crate_paths[@]}" -else - echo "GNU parallel not found, falling back to sequential generation..." - echo " hint: brew install parallel (macOS) or apt install parallel (Linux)" - for i in "${!crate_names[@]}"; do - echo " ${crate_names[$i]} -> ${crate_paths[$i]}/public-api.lock" - cargo +nightly public-api -p "${crate_names[$i]}" -ss > "$REPO_ROOT/${crate_paths[$i]}/public-api.lock" - done -fi - -echo "Done. All public-api.lock files regenerated." diff --git a/vortex-cuda/Cargo.toml b/vortex-cuda/Cargo.toml index 4d93236e741..cc47483a3b0 100644 --- a/vortex-cuda/Cargo.toml +++ b/vortex-cuda/Cargo.toml @@ -2,6 +2,7 @@ name = "vortex-cuda" authors.workspace = true description = "CUDA compute for Vortex" +publish = false edition = { workspace = true } homepage = { workspace = true } categories = { workspace = true } diff --git a/vortex-cuda/cub/Cargo.toml b/vortex-cuda/cub/Cargo.toml index 1c92776ddb7..5ee00739310 100644 --- a/vortex-cuda/cub/Cargo.toml +++ b/vortex-cuda/cub/Cargo.toml @@ -5,6 +5,7 @@ name = "vortex-cub" authors.workspace = true description = "Rust bindings to NVIDIA CUB library for Vortex GPU operations" +publish = false edition = { workspace = true } homepage = { workspace = true } categories = { workspace = true } diff --git a/vortex-cuda/macros/Cargo.toml b/vortex-cuda/macros/Cargo.toml index f13d41117fe..e46e57410b0 100644 --- a/vortex-cuda/macros/Cargo.toml +++ b/vortex-cuda/macros/Cargo.toml @@ -2,6 +2,7 @@ name = "vortex-cuda-macros" authors.workspace = true description = "Proc macros for CUDA conditional compilation in Vortex" +publish = false edition = { workspace = true } homepage = { workspace = true } categories = { workspace = true } diff --git a/vortex-cuda/nvcomp/Cargo.toml b/vortex-cuda/nvcomp/Cargo.toml index 9fd64640641..e16f9be80d4 100644 --- a/vortex-cuda/nvcomp/Cargo.toml +++ b/vortex-cuda/nvcomp/Cargo.toml @@ -2,6 +2,7 @@ name = "vortex-nvcomp" authors.workspace = true description = "Rust bindings to NVIDIA nvCOMP compression library" +publish = false edition = { workspace = true } homepage = { workspace = true } categories = { workspace = true } diff --git a/vortex-tui/public-api.lock b/vortex-tui/public-api.lock new file mode 100644 index 00000000000..b54e7834bb7 --- /dev/null +++ b/vortex-tui/public-api.lock @@ -0,0 +1,370 @@ +pub mod vortex_tui +pub mod vortex_tui::browse +pub mod vortex_tui::browse::app +pub enum vortex_tui::browse::app::KeyMode +pub vortex_tui::browse::app::KeyMode::Normal +pub vortex_tui::browse::app::KeyMode::Search +impl core::cmp::Eq for vortex_tui::browse::app::KeyMode +impl core::cmp::PartialEq for vortex_tui::browse::app::KeyMode +pub fn vortex_tui::browse::app::KeyMode::eq(&self, other: &vortex_tui::browse::app::KeyMode) -> bool +impl core::default::Default for vortex_tui::browse::app::KeyMode +pub fn vortex_tui::browse::app::KeyMode::default() -> vortex_tui::browse::app::KeyMode +impl core::marker::StructuralPartialEq for vortex_tui::browse::app::KeyMode +pub enum vortex_tui::browse::app::Tab +pub vortex_tui::browse::app::Tab::Layout +pub vortex_tui::browse::app::Tab::Query +pub vortex_tui::browse::app::Tab::Segments +impl core::clone::Clone for vortex_tui::browse::app::Tab +pub fn vortex_tui::browse::app::Tab::clone(&self) -> vortex_tui::browse::app::Tab +impl core::cmp::Eq for vortex_tui::browse::app::Tab +impl core::cmp::PartialEq for vortex_tui::browse::app::Tab +pub fn vortex_tui::browse::app::Tab::eq(&self, other: &vortex_tui::browse::app::Tab) -> bool +impl core::default::Default for vortex_tui::browse::app::Tab +pub fn vortex_tui::browse::app::Tab::default() -> vortex_tui::browse::app::Tab +impl core::marker::Copy for vortex_tui::browse::app::Tab +impl core::marker::StructuralPartialEq for vortex_tui::browse::app::Tab +pub struct vortex_tui::browse::app::AppState<'a> +pub vortex_tui::browse::app::AppState::current_tab: vortex_tui::browse::app::Tab +pub vortex_tui::browse::app::AppState::cursor: vortex_tui::browse::app::LayoutCursor +pub vortex_tui::browse::app::AppState::file_path: alloc::string::String +pub vortex_tui::browse::app::AppState::filter: core::option::Option> +pub vortex_tui::browse::app::AppState::frame_size: ratatui_core::layout::size::Size +pub vortex_tui::browse::app::AppState::key_mode: vortex_tui::browse::app::KeyMode +pub vortex_tui::browse::app::AppState::layouts_list_state: ratatui_widgets::list::state::ListState +pub vortex_tui::browse::app::AppState::query_state: vortex_tui::browse::ui::QueryState +pub vortex_tui::browse::app::AppState::search_filter: alloc::string::String +pub vortex_tui::browse::app::AppState::segment_grid_state: vortex_tui::browse::ui::SegmentGridState<'a> +pub vortex_tui::browse::app::AppState::session: &'a vortex_session::VortexSession +pub vortex_tui::browse::app::AppState::tree_scroll_offset: u16 +pub vortex_tui::browse::app::AppState::vxf: vortex_file::file::VortexFile +impl<'a> vortex_tui::browse::app::AppState<'a> +pub fn vortex_tui::browse::app::AppState<'a>::clear_search(&mut self) +pub async fn vortex_tui::browse::app::AppState<'a>::new(session: &'a vortex_session::VortexSession, path: impl core::convert::AsRef) -> vortex_error::VortexResult> +pub fn vortex_tui::browse::app::AppState<'a>::reset_layout_view_state(&mut self) +pub struct vortex_tui::browse::app::LayoutCursor +impl vortex_tui::browse::app::LayoutCursor +pub fn vortex_tui::browse::app::LayoutCursor::child(&self, n: usize) -> Self +pub fn vortex_tui::browse::app::LayoutCursor::dtype(&self) -> &vortex_dtype::dtype::DType +pub fn vortex_tui::browse::app::LayoutCursor::flat_layout_metadata_info(&self) -> alloc::string::String +pub fn vortex_tui::browse::app::LayoutCursor::flatbuffer_size(&self) -> usize +pub fn vortex_tui::browse::app::LayoutCursor::is_stats_table(&self) -> bool +pub fn vortex_tui::browse::app::LayoutCursor::layout(&self) -> &vortex_layout::layout::LayoutRef +pub fn vortex_tui::browse::app::LayoutCursor::new(footer: vortex_file::footer::Footer, segment_source: alloc::sync::Arc) -> Self +pub fn vortex_tui::browse::app::LayoutCursor::new_with_path(footer: vortex_file::footer::Footer, segment_source: alloc::sync::Arc, path: alloc::vec::Vec) -> Self +pub fn vortex_tui::browse::app::LayoutCursor::parent(&self) -> Self +pub fn vortex_tui::browse::app::LayoutCursor::segment_spec(&self, id: vortex_layout::segments::SegmentId) -> &vortex_file::footer::segment::SegmentSpec +pub fn vortex_tui::browse::app::LayoutCursor::total_size(&self) -> usize +pub mod vortex_tui::browse::ui +pub enum vortex_tui::browse::ui::QueryFocus +pub vortex_tui::browse::ui::QueryFocus::ResultsTable +pub vortex_tui::browse::ui::QueryFocus::SqlInput +impl core::clone::Clone for vortex_tui::browse::ui::QueryFocus +pub fn vortex_tui::browse::ui::QueryFocus::clone(&self) -> vortex_tui::browse::ui::QueryFocus +impl core::cmp::Eq for vortex_tui::browse::ui::QueryFocus +impl core::cmp::PartialEq for vortex_tui::browse::ui::QueryFocus +pub fn vortex_tui::browse::ui::QueryFocus::eq(&self, other: &vortex_tui::browse::ui::QueryFocus) -> bool +impl core::default::Default for vortex_tui::browse::ui::QueryFocus +pub fn vortex_tui::browse::ui::QueryFocus::default() -> vortex_tui::browse::ui::QueryFocus +impl core::fmt::Debug for vortex_tui::browse::ui::QueryFocus +pub fn vortex_tui::browse::ui::QueryFocus::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::marker::Copy for vortex_tui::browse::ui::QueryFocus +impl core::marker::StructuralPartialEq for vortex_tui::browse::ui::QueryFocus +pub enum vortex_tui::browse::ui::SortDirection +pub vortex_tui::browse::ui::SortDirection::Ascending +pub vortex_tui::browse::ui::SortDirection::Descending +pub vortex_tui::browse::ui::SortDirection::None +impl vortex_tui::browse::ui::SortDirection +pub fn vortex_tui::browse::ui::SortDirection::cycle(self) -> Self +pub fn vortex_tui::browse::ui::SortDirection::indicator(self) -> &'static str +impl core::clone::Clone for vortex_tui::browse::ui::SortDirection +pub fn vortex_tui::browse::ui::SortDirection::clone(&self) -> vortex_tui::browse::ui::SortDirection +impl core::cmp::Eq for vortex_tui::browse::ui::SortDirection +impl core::cmp::PartialEq for vortex_tui::browse::ui::SortDirection +pub fn vortex_tui::browse::ui::SortDirection::eq(&self, other: &vortex_tui::browse::ui::SortDirection) -> bool +impl core::default::Default for vortex_tui::browse::ui::SortDirection +pub fn vortex_tui::browse::ui::SortDirection::default() -> vortex_tui::browse::ui::SortDirection +impl core::fmt::Debug for vortex_tui::browse::ui::SortDirection +pub fn vortex_tui::browse::ui::SortDirection::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::marker::Copy for vortex_tui::browse::ui::SortDirection +impl core::marker::StructuralPartialEq for vortex_tui::browse::ui::SortDirection +pub struct vortex_tui::browse::ui::QueryState +pub vortex_tui::browse::ui::QueryState::base_query: alloc::string::String +pub vortex_tui::browse::ui::QueryState::current_page: usize +pub vortex_tui::browse::ui::QueryState::cursor_position: usize +pub vortex_tui::browse::ui::QueryState::error: core::option::Option +pub vortex_tui::browse::ui::QueryState::focus: vortex_tui::browse::ui::QueryFocus +pub vortex_tui::browse::ui::QueryState::horizontal_scroll: usize +pub vortex_tui::browse::ui::QueryState::order_clause: core::option::Option +pub vortex_tui::browse::ui::QueryState::page_size: usize +pub vortex_tui::browse::ui::QueryState::results: core::option::Option +pub vortex_tui::browse::ui::QueryState::running: bool +pub vortex_tui::browse::ui::QueryState::sort_column: core::option::Option +pub vortex_tui::browse::ui::QueryState::sort_direction: vortex_tui::browse::ui::SortDirection +pub vortex_tui::browse::ui::QueryState::sql_input: alloc::string::String +pub vortex_tui::browse::ui::QueryState::table_state: ratatui_widgets::table::state::TableState +pub vortex_tui::browse::ui::QueryState::total_row_count: core::option::Option +impl vortex_tui::browse::ui::QueryState +pub fn vortex_tui::browse::ui::QueryState::apply_sort(&mut self, session: &vortex_session::VortexSession, column: usize, file_path: &str) +pub fn vortex_tui::browse::ui::QueryState::clear_input(&mut self) +pub fn vortex_tui::browse::ui::QueryState::column_count(&self) -> usize +pub fn vortex_tui::browse::ui::QueryState::delete_char(&mut self) +pub fn vortex_tui::browse::ui::QueryState::delete_char_forward(&mut self) +pub fn vortex_tui::browse::ui::QueryState::execute_initial_query(&mut self, session: &vortex_session::VortexSession, file_path: &str) +pub fn vortex_tui::browse::ui::QueryState::insert_char(&mut self, c: char) +pub fn vortex_tui::browse::ui::QueryState::move_cursor_end(&mut self) +pub fn vortex_tui::browse::ui::QueryState::move_cursor_left(&mut self) +pub fn vortex_tui::browse::ui::QueryState::move_cursor_right(&mut self) +pub fn vortex_tui::browse::ui::QueryState::move_cursor_start(&mut self) +pub fn vortex_tui::browse::ui::QueryState::next_page(&mut self, session: &vortex_session::VortexSession, file_path: &str) +pub fn vortex_tui::browse::ui::QueryState::prev_page(&mut self, session: &vortex_session::VortexSession, file_path: &str) +pub fn vortex_tui::browse::ui::QueryState::selected_column(&self) -> usize +pub fn vortex_tui::browse::ui::QueryState::toggle_focus(&mut self) +pub fn vortex_tui::browse::ui::QueryState::total_pages(&self) -> usize +impl core::default::Default for vortex_tui::browse::ui::QueryState +pub fn vortex_tui::browse::ui::QueryState::default() -> Self +pub struct vortex_tui::browse::ui::SegmentGridState<'a> +pub vortex_tui::browse::ui::SegmentGridState::horizontal_scroll: usize +pub vortex_tui::browse::ui::SegmentGridState::horizontal_scroll_state: ratatui_widgets::scrollbar::ScrollbarState +pub vortex_tui::browse::ui::SegmentGridState::max_horizontal_scroll: usize +pub vortex_tui::browse::ui::SegmentGridState::max_vertical_scroll: usize +pub vortex_tui::browse::ui::SegmentGridState::segment_tree: core::option::Option<(taffy::tree::taffy_tree::TaffyTree<()>, taffy::tree::node::NodeId, vortex_utils::aliases::hash_map::HashMap>)> +pub vortex_tui::browse::ui::SegmentGridState::vertical_scroll: usize +pub vortex_tui::browse::ui::SegmentGridState::vertical_scroll_state: ratatui_widgets::scrollbar::ScrollbarState +impl vortex_tui::browse::ui::SegmentGridState<'_> +pub fn vortex_tui::browse::ui::SegmentGridState<'_>::scroll_down(&mut self, amount: usize) +pub fn vortex_tui::browse::ui::SegmentGridState<'_>::scroll_left(&mut self, amount: usize) +pub fn vortex_tui::browse::ui::SegmentGridState<'_>::scroll_right(&mut self, amount: usize) +pub fn vortex_tui::browse::ui::SegmentGridState<'_>::scroll_up(&mut self, amount: usize) +impl<'a> core::clone::Clone for vortex_tui::browse::ui::SegmentGridState<'a> +pub fn vortex_tui::browse::ui::SegmentGridState<'a>::clone(&self) -> vortex_tui::browse::ui::SegmentGridState<'a> +impl<'a> core::default::Default for vortex_tui::browse::ui::SegmentGridState<'a> +pub fn vortex_tui::browse::ui::SegmentGridState<'a>::default() -> vortex_tui::browse::ui::SegmentGridState<'a> +impl<'a> core::fmt::Debug for vortex_tui::browse::ui::SegmentGridState<'a> +pub fn vortex_tui::browse::ui::SegmentGridState<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_tui::browse::ui::render_app(app: &mut vortex_tui::browse::app::AppState<'_>, frame: &mut ratatui_core::terminal::frame::Frame<'_>) +pub async fn vortex_tui::browse::exec_tui(session: &vortex_session::VortexSession, file: impl core::convert::AsRef) -> vortex_error::VortexResult<()> +pub mod vortex_tui::convert +pub enum vortex_tui::convert::Strategy +pub vortex_tui::convert::Strategy::Btrblocks +pub vortex_tui::convert::Strategy::Compact +impl clap_builder::derive::ValueEnum for vortex_tui::convert::Strategy +pub fn vortex_tui::convert::Strategy::to_possible_value<'a>(&self) -> core::option::Option +pub fn vortex_tui::convert::Strategy::value_variants<'a>() -> &'a [Self] +impl core::clone::Clone for vortex_tui::convert::Strategy +pub fn vortex_tui::convert::Strategy::clone(&self) -> vortex_tui::convert::Strategy +impl core::default::Default for vortex_tui::convert::Strategy +pub fn vortex_tui::convert::Strategy::default() -> vortex_tui::convert::Strategy +impl core::fmt::Debug for vortex_tui::convert::Strategy +pub fn vortex_tui::convert::Strategy::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::marker::Copy for vortex_tui::convert::Strategy +pub struct vortex_tui::convert::ConvertArgs +pub vortex_tui::convert::ConvertArgs::file: std::path::PathBuf +pub vortex_tui::convert::ConvertArgs::quiet: bool +pub vortex_tui::convert::ConvertArgs::strategy: vortex_tui::convert::Strategy +impl clap_builder::derive::Args for vortex_tui::convert::ConvertArgs +pub fn vortex_tui::convert::ConvertArgs::augment_args<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::convert::ConvertArgs::augment_args_for_update<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::convert::ConvertArgs::group_id() -> core::option::Option +impl clap_builder::derive::CommandFactory for vortex_tui::convert::ConvertArgs +pub fn vortex_tui::convert::ConvertArgs::command<'b>() -> clap_builder::builder::command::Command +pub fn vortex_tui::convert::ConvertArgs::command_for_update<'b>() -> clap_builder::builder::command::Command +impl clap_builder::derive::FromArgMatches for vortex_tui::convert::ConvertArgs +pub fn vortex_tui::convert::ConvertArgs::from_arg_matches(__clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::convert::ConvertArgs::from_arg_matches_mut(__clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::convert::ConvertArgs::update_from_arg_matches(&mut self, __clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +pub fn vortex_tui::convert::ConvertArgs::update_from_arg_matches_mut(&mut self, __clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +impl clap_builder::derive::Parser for vortex_tui::convert::ConvertArgs +impl core::clone::Clone for vortex_tui::convert::ConvertArgs +pub fn vortex_tui::convert::ConvertArgs::clone(&self) -> vortex_tui::convert::ConvertArgs +impl core::fmt::Debug for vortex_tui::convert::ConvertArgs +pub fn vortex_tui::convert::ConvertArgs::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub const vortex_tui::convert::BATCH_SIZE: usize +pub async fn vortex_tui::convert::exec_convert(session: &vortex_session::VortexSession, flags: vortex_tui::convert::ConvertArgs) -> anyhow::Result<()> +pub mod vortex_tui::datafusion_helper +pub fn vortex_tui::datafusion_helper::arrow_value_to_json(array: &dyn arrow_array::array::Array, idx: usize) -> serde_json::value::Value +pub async fn vortex_tui::datafusion_helper::create_vortex_context(session: &vortex_session::VortexSession, file_path: &str) -> core::result::Result +pub async fn vortex_tui::datafusion_helper::execute_vortex_query(session: &vortex_session::VortexSession, file_path: &str, sql: &str) -> core::result::Result, alloc::string::String> +pub fn vortex_tui::datafusion_helper::json_value_to_display(value: serde_json::value::Value) -> alloc::string::String +pub mod vortex_tui::inspect +pub enum vortex_tui::inspect::InspectMode +pub vortex_tui::inspect::InspectMode::Eof +pub vortex_tui::inspect::InspectMode::Footer +pub vortex_tui::inspect::InspectMode::Postscript +impl clap_builder::derive::FromArgMatches for vortex_tui::inspect::InspectMode +pub fn vortex_tui::inspect::InspectMode::from_arg_matches(__clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::inspect::InspectMode::from_arg_matches_mut(__clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::inspect::InspectMode::update_from_arg_matches(&mut self, __clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +pub fn vortex_tui::inspect::InspectMode::update_from_arg_matches_mut<'b>(&mut self, __clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +impl clap_builder::derive::Subcommand for vortex_tui::inspect::InspectMode +pub fn vortex_tui::inspect::InspectMode::augment_subcommands<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::inspect::InspectMode::augment_subcommands_for_update<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::inspect::InspectMode::has_subcommand(__clap_name: &str) -> bool +impl core::fmt::Debug for vortex_tui::inspect::InspectMode +pub fn vortex_tui::inspect::InspectMode::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_tui::inspect::EofInfoJson +pub vortex_tui::inspect::EofInfoJson::current_version: u16 +pub vortex_tui::inspect::EofInfoJson::magic_bytes: alloc::string::String +pub vortex_tui::inspect::EofInfoJson::postscript_size: u16 +pub vortex_tui::inspect::EofInfoJson::valid_magic: bool +pub vortex_tui::inspect::EofInfoJson::version: u16 +impl serde_core::ser::Serialize for vortex_tui::inspect::EofInfoJson +pub fn vortex_tui::inspect::EofInfoJson::serialize<__S>(&self, __serializer: __S) -> core::result::Result<<__S as serde_core::ser::Serializer>::Ok, <__S as serde_core::ser::Serializer>::Error> where __S: serde_core::ser::Serializer +pub struct vortex_tui::inspect::FooterInfoJson +pub vortex_tui::inspect::FooterInfoJson::segments: alloc::vec::Vec +pub vortex_tui::inspect::FooterInfoJson::total_data_size: u64 +pub vortex_tui::inspect::FooterInfoJson::total_segments: usize +impl serde_core::ser::Serialize for vortex_tui::inspect::FooterInfoJson +pub fn vortex_tui::inspect::FooterInfoJson::serialize<__S>(&self, __serializer: __S) -> core::result::Result<<__S as serde_core::ser::Serializer>::Ok, <__S as serde_core::ser::Serializer>::Error> where __S: serde_core::ser::Serializer +pub struct vortex_tui::inspect::FooterSegmentJson +pub vortex_tui::inspect::FooterSegmentJson::alignment: usize +pub vortex_tui::inspect::FooterSegmentJson::end_offset: u64 +pub vortex_tui::inspect::FooterSegmentJson::index: usize +pub vortex_tui::inspect::FooterSegmentJson::length: u32 +pub vortex_tui::inspect::FooterSegmentJson::offset: u64 +pub vortex_tui::inspect::FooterSegmentJson::path: core::option::Option +impl serde_core::ser::Serialize for vortex_tui::inspect::FooterSegmentJson +pub fn vortex_tui::inspect::FooterSegmentJson::serialize<__S>(&self, __serializer: __S) -> core::result::Result<<__S as serde_core::ser::Serializer>::Ok, <__S as serde_core::ser::Serializer>::Error> where __S: serde_core::ser::Serializer +pub struct vortex_tui::inspect::InspectArgs +pub vortex_tui::inspect::InspectArgs::file: std::path::PathBuf +pub vortex_tui::inspect::InspectArgs::json: bool +pub vortex_tui::inspect::InspectArgs::mode: core::option::Option +impl clap_builder::derive::Args for vortex_tui::inspect::InspectArgs +pub fn vortex_tui::inspect::InspectArgs::augment_args<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::inspect::InspectArgs::augment_args_for_update<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::inspect::InspectArgs::group_id() -> core::option::Option +impl clap_builder::derive::CommandFactory for vortex_tui::inspect::InspectArgs +pub fn vortex_tui::inspect::InspectArgs::command<'b>() -> clap_builder::builder::command::Command +pub fn vortex_tui::inspect::InspectArgs::command_for_update<'b>() -> clap_builder::builder::command::Command +impl clap_builder::derive::FromArgMatches for vortex_tui::inspect::InspectArgs +pub fn vortex_tui::inspect::InspectArgs::from_arg_matches(__clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::inspect::InspectArgs::from_arg_matches_mut(__clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::inspect::InspectArgs::update_from_arg_matches(&mut self, __clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +pub fn vortex_tui::inspect::InspectArgs::update_from_arg_matches_mut(&mut self, __clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +impl clap_builder::derive::Parser for vortex_tui::inspect::InspectArgs +impl core::fmt::Debug for vortex_tui::inspect::InspectArgs +pub fn vortex_tui::inspect::InspectArgs::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_tui::inspect::InspectOutput +pub vortex_tui::inspect::InspectOutput::eof: vortex_tui::inspect::EofInfoJson +pub vortex_tui::inspect::InspectOutput::file_path: alloc::string::String +pub vortex_tui::inspect::InspectOutput::file_size: u64 +pub vortex_tui::inspect::InspectOutput::footer: core::option::Option +pub vortex_tui::inspect::InspectOutput::postscript: core::option::Option +impl serde_core::ser::Serialize for vortex_tui::inspect::InspectOutput +pub fn vortex_tui::inspect::InspectOutput::serialize<__S>(&self, __serializer: __S) -> core::result::Result<<__S as serde_core::ser::Serializer>::Ok, <__S as serde_core::ser::Serializer>::Error> where __S: serde_core::ser::Serializer +pub struct vortex_tui::inspect::PostscriptInfoJson +pub vortex_tui::inspect::PostscriptInfoJson::dtype: core::option::Option +pub vortex_tui::inspect::PostscriptInfoJson::footer: vortex_tui::inspect::SegmentInfoJson +pub vortex_tui::inspect::PostscriptInfoJson::layout: vortex_tui::inspect::SegmentInfoJson +pub vortex_tui::inspect::PostscriptInfoJson::statistics: core::option::Option +impl serde_core::ser::Serialize for vortex_tui::inspect::PostscriptInfoJson +pub fn vortex_tui::inspect::PostscriptInfoJson::serialize<__S>(&self, __serializer: __S) -> core::result::Result<<__S as serde_core::ser::Serializer>::Ok, <__S as serde_core::ser::Serializer>::Error> where __S: serde_core::ser::Serializer +pub struct vortex_tui::inspect::SegmentInfoJson +pub vortex_tui::inspect::SegmentInfoJson::alignment: usize +pub vortex_tui::inspect::SegmentInfoJson::length: u32 +pub vortex_tui::inspect::SegmentInfoJson::offset: u64 +impl serde_core::ser::Serialize for vortex_tui::inspect::SegmentInfoJson +pub fn vortex_tui::inspect::SegmentInfoJson::serialize<__S>(&self, __serializer: __S) -> core::result::Result<<__S as serde_core::ser::Serializer>::Ok, <__S as serde_core::ser::Serializer>::Error> where __S: serde_core::ser::Serializer +pub async fn vortex_tui::inspect::exec_inspect(session: &vortex_session::VortexSession, args: vortex_tui::inspect::InspectArgs) -> anyhow::Result<()> +pub mod vortex_tui::query +pub struct vortex_tui::query::QueryArgs +pub vortex_tui::query::QueryArgs::file: std::path::PathBuf +pub vortex_tui::query::QueryArgs::sql: alloc::string::String +impl clap_builder::derive::Args for vortex_tui::query::QueryArgs +pub fn vortex_tui::query::QueryArgs::augment_args<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::query::QueryArgs::augment_args_for_update<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::query::QueryArgs::group_id() -> core::option::Option +impl clap_builder::derive::CommandFactory for vortex_tui::query::QueryArgs +pub fn vortex_tui::query::QueryArgs::command<'b>() -> clap_builder::builder::command::Command +pub fn vortex_tui::query::QueryArgs::command_for_update<'b>() -> clap_builder::builder::command::Command +impl clap_builder::derive::FromArgMatches for vortex_tui::query::QueryArgs +pub fn vortex_tui::query::QueryArgs::from_arg_matches(__clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::query::QueryArgs::from_arg_matches_mut(__clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::query::QueryArgs::update_from_arg_matches(&mut self, __clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +pub fn vortex_tui::query::QueryArgs::update_from_arg_matches_mut(&mut self, __clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +impl clap_builder::derive::Parser for vortex_tui::query::QueryArgs +impl core::fmt::Debug for vortex_tui::query::QueryArgs +pub fn vortex_tui::query::QueryArgs::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub async fn vortex_tui::query::exec_query(session: &vortex_session::VortexSession, args: vortex_tui::query::QueryArgs) -> vortex_error::VortexResult<()> +pub mod vortex_tui::segment_tree +pub struct vortex_tui::segment_tree::SegmentDisplay +pub vortex_tui::segment_tree::SegmentDisplay::name: vortex_dtype::field_names::FieldName +pub vortex_tui::segment_tree::SegmentDisplay::row_count: u64 +pub vortex_tui::segment_tree::SegmentDisplay::row_offset: u64 +pub vortex_tui::segment_tree::SegmentDisplay::spec: vortex_file::footer::segment::SegmentSpec +pub struct vortex_tui::segment_tree::SegmentTree +pub vortex_tui::segment_tree::SegmentTree::segment_ordering: alloc::vec::Vec +pub vortex_tui::segment_tree::SegmentTree::segments: vortex_utils::aliases::hash_map::HashMap> +pub fn vortex_tui::segment_tree::collect_segment_tree(root_layout: &dyn vortex_layout::layout::Layout, segments: &alloc::sync::Arc<[vortex_file::footer::segment::SegmentSpec]>) -> vortex_tui::segment_tree::SegmentTree +pub mod vortex_tui::segments +pub struct vortex_tui::segments::SegmentsArgs +pub vortex_tui::segments::SegmentsArgs::file: std::path::PathBuf +impl clap_builder::derive::Args for vortex_tui::segments::SegmentsArgs +pub fn vortex_tui::segments::SegmentsArgs::augment_args<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::segments::SegmentsArgs::augment_args_for_update<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::segments::SegmentsArgs::group_id() -> core::option::Option +impl clap_builder::derive::CommandFactory for vortex_tui::segments::SegmentsArgs +pub fn vortex_tui::segments::SegmentsArgs::command<'b>() -> clap_builder::builder::command::Command +pub fn vortex_tui::segments::SegmentsArgs::command_for_update<'b>() -> clap_builder::builder::command::Command +impl clap_builder::derive::FromArgMatches for vortex_tui::segments::SegmentsArgs +pub fn vortex_tui::segments::SegmentsArgs::from_arg_matches(__clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::segments::SegmentsArgs::from_arg_matches_mut(__clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::segments::SegmentsArgs::update_from_arg_matches(&mut self, __clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +pub fn vortex_tui::segments::SegmentsArgs::update_from_arg_matches_mut(&mut self, __clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +impl clap_builder::derive::Parser for vortex_tui::segments::SegmentsArgs +impl core::fmt::Debug for vortex_tui::segments::SegmentsArgs +pub fn vortex_tui::segments::SegmentsArgs::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub async fn vortex_tui::segments::exec_segments(session: &vortex_session::VortexSession, args: vortex_tui::segments::SegmentsArgs) -> vortex_error::VortexResult<()> +pub mod vortex_tui::tree +pub enum vortex_tui::tree::TreeMode +pub vortex_tui::tree::TreeMode::Array +pub vortex_tui::tree::TreeMode::Array::file: std::path::PathBuf +pub vortex_tui::tree::TreeMode::Array::json: bool +pub vortex_tui::tree::TreeMode::Layout +pub vortex_tui::tree::TreeMode::Layout::file: std::path::PathBuf +pub vortex_tui::tree::TreeMode::Layout::json: bool +pub vortex_tui::tree::TreeMode::Layout::verbose: bool +impl clap_builder::derive::FromArgMatches for vortex_tui::tree::TreeMode +pub fn vortex_tui::tree::TreeMode::from_arg_matches(__clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::tree::TreeMode::from_arg_matches_mut(__clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::tree::TreeMode::update_from_arg_matches(&mut self, __clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +pub fn vortex_tui::tree::TreeMode::update_from_arg_matches_mut<'b>(&mut self, __clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +impl clap_builder::derive::Subcommand for vortex_tui::tree::TreeMode +pub fn vortex_tui::tree::TreeMode::augment_subcommands<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::tree::TreeMode::augment_subcommands_for_update<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::tree::TreeMode::has_subcommand(__clap_name: &str) -> bool +impl core::fmt::Debug for vortex_tui::tree::TreeMode +pub fn vortex_tui::tree::TreeMode::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_tui::tree::LayoutTreeNode +pub vortex_tui::tree::LayoutTreeNode::children: alloc::vec::Vec +pub vortex_tui::tree::LayoutTreeNode::dtype: alloc::string::String +pub vortex_tui::tree::LayoutTreeNode::encoding: alloc::string::String +pub vortex_tui::tree::LayoutTreeNode::metadata_bytes: usize +pub vortex_tui::tree::LayoutTreeNode::row_count: u64 +pub vortex_tui::tree::LayoutTreeNode::segment_ids: alloc::vec::Vec +impl serde_core::ser::Serialize for vortex_tui::tree::LayoutTreeNode +pub fn vortex_tui::tree::LayoutTreeNode::serialize<__S>(&self, __serializer: __S) -> core::result::Result<<__S as serde_core::ser::Serializer>::Ok, <__S as serde_core::ser::Serializer>::Error> where __S: serde_core::ser::Serializer +pub struct vortex_tui::tree::LayoutTreeNodeWithName +pub vortex_tui::tree::LayoutTreeNodeWithName::name: alloc::string::String +pub vortex_tui::tree::LayoutTreeNodeWithName::node: vortex_tui::tree::LayoutTreeNode +impl serde_core::ser::Serialize for vortex_tui::tree::LayoutTreeNodeWithName +pub fn vortex_tui::tree::LayoutTreeNodeWithName::serialize<__S>(&self, __serializer: __S) -> core::result::Result<<__S as serde_core::ser::Serializer>::Ok, <__S as serde_core::ser::Serializer>::Error> where __S: serde_core::ser::Serializer +pub struct vortex_tui::tree::TreeArgs +pub vortex_tui::tree::TreeArgs::mode: vortex_tui::tree::TreeMode +impl clap_builder::derive::Args for vortex_tui::tree::TreeArgs +pub fn vortex_tui::tree::TreeArgs::augment_args<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::tree::TreeArgs::augment_args_for_update<'b>(__clap_app: clap_builder::builder::command::Command) -> clap_builder::builder::command::Command +pub fn vortex_tui::tree::TreeArgs::group_id() -> core::option::Option +impl clap_builder::derive::CommandFactory for vortex_tui::tree::TreeArgs +pub fn vortex_tui::tree::TreeArgs::command<'b>() -> clap_builder::builder::command::Command +pub fn vortex_tui::tree::TreeArgs::command_for_update<'b>() -> clap_builder::builder::command::Command +impl clap_builder::derive::FromArgMatches for vortex_tui::tree::TreeArgs +pub fn vortex_tui::tree::TreeArgs::from_arg_matches(__clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::tree::TreeArgs::from_arg_matches_mut(__clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result +pub fn vortex_tui::tree::TreeArgs::update_from_arg_matches(&mut self, __clap_arg_matches: &clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +pub fn vortex_tui::tree::TreeArgs::update_from_arg_matches_mut(&mut self, __clap_arg_matches: &mut clap_builder::parser::matches::arg_matches::ArgMatches) -> core::result::Result<(), clap_builder::Error> +impl clap_builder::derive::Parser for vortex_tui::tree::TreeArgs +impl core::fmt::Debug for vortex_tui::tree::TreeArgs +pub fn vortex_tui::tree::TreeArgs::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub async fn vortex_tui::tree::exec_tree(session: &vortex_session::VortexSession, args: vortex_tui::tree::TreeArgs) -> vortex_error::VortexResult<()> +pub async fn vortex_tui::launch(session: &vortex_session::VortexSession) -> anyhow::Result<()> +pub async fn vortex_tui::launch_from(session: &vortex_session::VortexSession, args: impl core::iter::traits::collect::IntoIterator + core::clone::Clone>) -> anyhow::Result<()>