Remove ReadOnlySignal (#4552)

* Remove ReadOnlySignal

* Add back ReadOnlySignal as deprecated
This commit is contained in:
Henry authored and GitHub committed 2025-08-20 10:49:03 -07:00
1 parent 0a04a199a4
commit 525c00ddac
6 files changed
+17 -14

No files matched your search

+1 -1
View File
@@ -509,7 +509,7 @@ fn type_from_inside_option(ty: &Type) -> Option<&Type> {
// If the segment is a supported optional type, provide the inner type.
// Return the inner type if the pattern is `Option<T>` or `ReadSignal<Option<T>>``
if seg.ident == "ReadOnlySignal" || seg.ident == "ReadSignal" {
if seg.ident == "ReadSignal" || seg.ident == "ReadOnlySignal" {
// Get the inner type. E.g. the `u16` in `ReadSignal<u16>` or `Option` in `ReadSignal<Option<bool>>`
let inner_type = extract_inner_type_from_segment(seg)?;
let Type::Path(inner_path) = inner_type else {
@@ -169,33 +169,33 @@ fn spreads_memorize_in_place() {
// Regression test for https://github.com/DioxusLabs/dioxus/issues/2331
#[test]
fn cloning_read_only_signal_components_work() {
fn cloning_read_signal_components_work() {
fn app() -> Element {
if generation() < 5 {
println!("Generating new props");
needs_update();
}
let read_only_signal_rsx = rsx! {
TakesReadOnlySignalNonClone { sig: NonCloneable(generation() as i32) }
TakesReadOnlySignalNum { sig: generation() as i32 }
let read_signal_rsx = rsx! {
TakesReadSignalNonClone { sig: NonCloneable(generation() as i32) }
TakesReadSignalNum { sig: generation() as i32 }
};
rsx! {
{read_only_signal_rsx.clone()}
{read_only_signal_rsx}
{read_signal_rsx.clone()}
{read_signal_rsx}
}
}
struct NonCloneable<T>(T);
#[component]
fn TakesReadOnlySignalNum(sig: ReadSignal<i32>) -> Element {
fn TakesReadSignalNum(sig: ReadSignal<i32>) -> Element {
rsx! {}
}
#[component]
fn TakesReadOnlySignalNonClone(sig: ReadSignal<NonCloneable<i32>>) -> Element {
fn TakesReadSignalNonClone(sig: ReadSignal<NonCloneable<i32>>) -> Element {
rsx! {}
}