lapce / floem

A native Rust UI library with fine-grained reactivity
https://docs.rs/floem
MIT License
2.7k stars 123 forks source link

crash app when write app in Arabic #538

Open TechComet opened 1 month ago

TechComet commented 1 month ago
use floem::IntoView;
use floem::views::text;

fn app_view() -> impl IntoView {
    text("السلام عليكم")
}

fn main() {
    floem::launch(app_view)
}

error:

warning: testapp v0.1.0 (/home/igbaria/dev/MyProjects/RustProjects/testapp) ignoring invalid dependency `lapce` which is missing a lib target
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.26s
     Running `target/debug/testapp`
thread 'main' panicked at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-cosmic-text-0.7.2/src/shape.rs:108:17:
begin <= end (10 <= 8) when slicing `السلام`
stack backtrace:
   0: rust_begin_unwind
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:652:5
   1: core::panicking::panic_fmt
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/panicking.rs:72:14
   2: core::str::slice_error_fail_rt
   3: core::str::slice_error_fail
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/str/mod.rs:89:5
   4: core::str::traits::<impl core::slice::index::SliceIndex<str> for core::ops::range::Range<usize>>::index
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/str/traits.rs:244:21
   5: core::str::traits::<impl core::ops::index::Index<I> for str>::index
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/str/traits.rs:62:9
   6: floem_cosmic_text::shape::shape_fallback
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-cosmic-text-0.7.2/src/shape.rs:108:17
   7: floem_cosmic_text::shape::shape_run
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-cosmic-text-0.7.2/src/shape.rs:220:37
   8: floem_cosmic_text::shape::ShapeWord::new
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-cosmic-text-0.7.2/src/shape.rs:429:32
   9: floem_cosmic_text::shape::ShapeSpan::new
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-cosmic-text-0.7.2/src/shape.rs:497:28
  10: floem_cosmic_text::shape::ShapeLine::new
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-cosmic-text-0.7.2/src/shape.rs:613:24
  11: floem_cosmic_text::buffer_line::TextLayoutLine::shape
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-cosmic-text-0.7.2/src/buffer_line.rs:200:35
  12: floem_cosmic_text::buffer_line::TextLayoutLine::layout
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-cosmic-text-0.7.2/src/buffer_line.rs:222:25
  13: floem_cosmic_text::buffer::TextLayout::shape_until
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-cosmic-text-0.7.2/src/buffer.rs:395:26
  14: floem_cosmic_text::buffer::TextLayout::shape_until_scroll
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-cosmic-text-0.7.2/src/buffer.rs:454:28
  15: floem_cosmic_text::buffer::TextLayout::set_text
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-cosmic-text-0.7.2/src/buffer.rs:585:9
  16: floem::views::label::Label::set_text_layout
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/views/label.rs:167:9
  17: <floem::views::label::Label as floem::view::View>::layout::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/views/label.rs:393:21
  18: floem::context::LayoutCx::layout_node
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/context.rs:845:25
  19: <floem::views::label::Label as floem::view::View>::layout
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/views/label.rs:388:9
  20: <alloc::boxed::Box<dyn floem::view::View> as floem::view::View>::layout
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:327:9
  21: <alloc::boxed::Box<dyn floem::view::View> as floem::view::View>::layout
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:327:9
  22: floem::view::recursively_layout_view::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:191:24
  23: floem::context::LayoutCx::layout_node
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/context.rs:845:25
  24: floem::view::recursively_layout_view
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:186:5
  25: floem::view::View::layout
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:245:9
  26: <alloc::boxed::Box<dyn floem::view::View> as floem::view::View>::layout
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:327:9
  27: <alloc::boxed::Box<dyn floem::view::View> as floem::view::View>::layout
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:327:9
  28: floem::view::recursively_layout_view::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:191:24
  29: floem::context::LayoutCx::layout_node
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/context.rs:845:25
  30: floem::view::recursively_layout_view
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:186:5
  31: floem::view::View::layout
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:245:9
  32: <alloc::boxed::Box<dyn floem::view::View> as floem::view::View>::layout
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:327:9
  33: <alloc::boxed::Box<dyn floem::view::View> as floem::view::View>::layout
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:327:9
  34: floem::view::recursively_layout_view::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:191:24
  35: floem::context::LayoutCx::layout_node
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/context.rs:845:25
  36: floem::view::recursively_layout_view
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:186:5
  37: floem::view::View::layout
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/view.rs:245:9
  38: floem::context::LayoutCx::layout_view
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/context.rs:854:9
  39: floem::window_handle::WindowHandle::layout
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/window_handle.rs:517:18
  40: floem::window_handle::WindowHandle::process_update_no_paint
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/window_handle.rs:694:17
  41: floem::window_handle::WindowHandle::process_update
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/window_handle.rs:667:12
  42: floem::app_handle::ApplicationHandle::handle_updates_for_all_windows
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/app_handle.rs:392:13
  43: floem::app_handle::ApplicationHandle::idle
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/app_handle.rs:387:9
  44: floem::app::Application::run
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/app.rs:143:9
  45: floem::app::launch
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/1589f5a/src/app.rs:34:5
  46: testapp::main
             at ./src/main.rs:259:5
  47: core::ops::function::FnOnce::call_once
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Process finished with exit code 101
dzhou121 commented 1 month ago

It should be fixed now in latest main.

TechComet commented 1 month ago

thank you it's work now, but it needs more work for text_editor The cursor in the text_editor is not behaving as expected when typing or navigating with the keyboard.

I apologize for not being able to assist at this time, as I'm currently new to Rust development.

TechComet commented 1 month ago

I encountered an error that I couldn't identify the cause of. I was typing randomly in Arabic between English words.

cargo run --color=always --package untitled4 --bin untitled4
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.23s
     Running `target/debug/untitled4`
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
Editor changed
thread 'main' panicked at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/editor/visual_line.rs:1744:9:
line: 0, line_index: 1, line_count: 2, vline: RVLine { line: 0, line_index: 1 }, start: 109, end: 101, backwards: false text_len: 111
stack backtrace:
   0: rust_begin_unwind
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:652:5
   1: core::panicking::panic_fmt
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/panicking.rs:72:14
   2: <floem::views::editor::visual_line::VisualLinesRelative<T> as core::iter::traits::iterator::Iterator>::next
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/editor/visual_line.rs:1744:9
   3: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/adapters/map.rs:108:9
   4: <core::iter::adapters::take::Take<I> as core::iter::traits::iterator::Iterator>::next
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/adapters/take.rs:41:13
   5: <core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/adapters/enumerate.rs:48:17
   6: floem::views::editor::normal_compute_screen_lines
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/editor/mod.rs:1545:28
   7: floem::views::editor::text::Document::compute_screen_lines
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/editor/text.rs:157:9
   8: floem::views::editor::Editor::compute_screen_lines
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/editor/mod.rs:481:9
   9: floem::views::editor::create_view_effects::{{closure}}::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/editor/mod.rs:1419:36
  10: core::option::Option<T>::map
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/option.rs:1075:29
  11: floem_reactive::signal::signal_update_value
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/reactive/src/signal.rs:407:9
  12: floem_reactive::signal::RwSignal<T>::update
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/reactive/src/signal.rs:57:13
  13: floem::views::editor::create_view_effects::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/editor/mod.rs:1418:9
  14: floem::views::editor::create_view_effects::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/editor/mod.rs:1497:9
  15: <floem_reactive::effect::Effect<T,F> as floem_reactive::effect::EffectTrait>::run
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/reactive/src/effect.rs:235:25
  16: floem_reactive::effect::run_effect::{{closure}}::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/reactive/src/effect.rs:173:13
  17: floem_reactive::scope::with_scope
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/reactive/src/scope.rs:129:18
  18: floem_reactive::effect::run_effect::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/reactive/src/effect.rs:171:9
  19: std::thread::local::LocalKey<T>::try_with
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/thread/local.rs:283:12
  20: std::thread::local::LocalKey<T>::with
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/thread/local.rs:260:9
  21: floem_reactive::effect::run_effect
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/reactive/src/effect.rs:167:5
  22: floem_reactive::signal::Signal::run_effects
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/reactive/src/signal.rs:366:13
  23: floem_reactive::signal::signal_update_value
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/reactive/src/signal.rs:409:5
  24: floem_reactive::signal::RwSignal<T>::try_update
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/reactive/src/signal.rs:68:9
  25: floem::views::editor::text_document::TextDocument::update_cache_rev
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/editor/text_document.rs:109:9
  26: <floem::views::editor::text_document::TextDocument as floem::views::editor::text::Document>::receive_char
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/editor/text_document.rs:226:17
  27: floem::views::editor::Editor::receive_char
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/editor/mod.rs:474:9
  28: floem::views::editor::view::editor_content::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/editor/view.rs:1180:25
  29: floem::views::decorator::Decorators::on_event_stop::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/views/decorator.rs:172:13
  30: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/boxed.rs:2077:9
  31: floem::context::EventCx::unconditional_view_event::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/context.rs:439:35
  32: <core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::fold
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/slice/iter/macros.rs:230:27
  33: floem::context::EventCx::unconditional_view_event
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/context.rs:438:24
  34: floem::window_handle::WindowHandle::event
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/window_handle.rs:191:34
  35: floem::window_handle::WindowHandle::key_event
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/window_handle.rs:385:13
  36: floem::app_handle::ApplicationHandle::handle_window_event
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/app_handle.rs:185:21
  37: floem::app::Application::run::{{closure}}
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/app.rs:151:21
  38: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ops/function.rs:294:13
  39: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ops/function.rs:294:13
  40: floem_winit::platform_impl::platform::wayland::event_loop::EventLoop<T>::single_iteration
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-winit-0.29.4/src/platform_impl/linux/wayland/event_loop/mod.rs:461:13
  41: floem_winit::platform_impl::platform::wayland::event_loop::EventLoop<T>::poll_events_with_timeout
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-winit-0.29.4/src/platform_impl/linux/wayland/event_loop/mod.rs:323:9
  42: floem_winit::platform_impl::platform::wayland::event_loop::EventLoop<T>::pump_events
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-winit-0.29.4/src/platform_impl/linux/wayland/event_loop/mod.rs:237:13
  43: floem_winit::platform_impl::platform::wayland::event_loop::EventLoop<T>::run_on_demand
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-winit-0.29.4/src/platform_impl/linux/wayland/event_loop/mod.rs:201:19
  44: floem_winit::platform_impl::platform::EventLoop<T>::run_on_demand
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-winit-0.29.4/src/platform_impl/linux/mod.rs:821:56
  45: floem_winit::platform_impl::platform::EventLoop<T>::run
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-winit-0.29.4/src/platform_impl/linux/mod.rs:814:9
  46: floem_winit::event_loop::EventLoop<T>::run
             at /home/igbaria/.cargo/registry/src/index.crates.io-6f17d22bba15001f/floem-winit-0.29.4/src/event_loop.rs:249:9
  47: floem::app::Application::run
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/app.rs:144:17
  48: floem::app::launch
             at /home/igbaria/.cargo/git/checkouts/floem-69eea0a757d1e3ee/32c41cb/src/app.rs:34:5
  49: untitled4::main
             at ./src/main.rs:76:5
  50: core::ops::function::FnOnce::call_once
             at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Process finished with exit code 101