use_sorted.rs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. use std::cmp::Ordering;
  2. use std::ops::DerefMut;
  3. use crate::use_memo;
  4. use dioxus_signals::{ReadOnlySignal, Signal};
  5. pub fn use_sorted<V: 'static, T: PartialEq>(
  6. collection: impl FnMut() -> Signal<V>,
  7. ) -> ReadOnlySignal<Vec<T>>
  8. // pub fn use_sorted<S, I, T>(iterable: impl FnMut() -> Signal<V>) -> ReadOnlySignal<T>
  9. // where
  10. // S: Into<MaybeSignal<I>>,
  11. // T: Ord,
  12. // I: DerefMut<Target = [T]> + Clone + PartialEq,
  13. {
  14. use_memo(move || {
  15. unimplemented!()
  16. // let mut iterable = collection();
  17. // iterable.sort();
  18. // iterable
  19. })
  20. // let iterable = iterable.into();
  21. // // use_memo(f)
  22. // create_memo(move |_| {
  23. // let mut iterable = iterable.get();
  24. // iterable.sort();
  25. // iterable
  26. // })
  27. // .into()
  28. }
  29. // /// Version of [`use_sorted`] with a compare function.
  30. // pub fn use_sorted_by<S, I, T, F>(iterable: S, cmp_fn: F) -> Signal<I>
  31. // where
  32. // S: Into<MaybeSignal<I>>,
  33. // I: DerefMut<Target = [T]> + Clone + PartialEq,
  34. // F: FnMut(&T, &T) -> Ordering + Clone + 'static,
  35. // {
  36. // let iterable = iterable.into();
  37. // create_memo(move |_| {
  38. // let mut iterable = iterable.get();
  39. // iterable.sort_by(cmp_fn.clone());
  40. // iterable
  41. // })
  42. // .into()
  43. // }
  44. // /// Version of [`use_sorted`] by key.
  45. // pub fn use_sorted_by_key<S, I, T, K, F>(iterable: S, key_fn: F) -> Signal<I>
  46. // where
  47. // S: Into<MaybeSignal<I>>,
  48. // I: DerefMut<Target = [T]> + Clone + PartialEq,
  49. // K: Ord,
  50. // F: FnMut(&T) -> K + Clone + 'static,
  51. // {
  52. // let iterable = iterable.into();
  53. // create_memo(move |_| {
  54. // let mut iterable = iterable.get();
  55. // iterable.sort_by_key(key_fn.clone());
  56. // iterable
  57. // })
  58. // .into()
  59. // }