Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9dfbb423f | ||
|
|
2e0e47d72b | ||
|
|
287598bb79 |
No files matched your search
@@ -554,7 +554,8 @@ pub async fn get_student_pdf(student_id: String) -> Result<(String, Vec<u8>), Se
|
||||
.replace("[", "(")
|
||||
.replace("]", ")")
|
||||
// Ensures trailing commas for lists of dictionaries
|
||||
.replace("))", "),)");
|
||||
.replace("))", "),)")
|
||||
.replace("\")", "\",)");
|
||||
|
||||
debug_log!("New string: {}", typst_string);
|
||||
|
||||
|
||||
Generated
-7
@@ -1,7 +0,0 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "traits"
|
||||
version = "0.1.0"
|
||||
@@ -1,6 +0,0 @@
|
||||
[package]
|
||||
name = "traits"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
@@ -1,3 +0,0 @@
|
||||
pub mod reactive;
|
||||
|
||||
pub use reactive::*;
|
||||
@@ -1,82 +0,0 @@
|
||||
/// Trait that ensures a reactive struct can be created from a non-reactive struct.
|
||||
///
|
||||
/// For example:
|
||||
///
|
||||
/// ```rust
|
||||
/// struct User {
|
||||
/// id: i32,
|
||||
/// name: String
|
||||
/// }
|
||||
///
|
||||
/// struct UserReactive {
|
||||
/// id: RwSignal<i32>,
|
||||
/// name: RwSignal<String>
|
||||
/// }
|
||||
///
|
||||
/// impl ReactiveCapture for UserReactive {
|
||||
/// // implement - required for ReactiveType.
|
||||
/// }
|
||||
///
|
||||
/// impl AsReactive for User {
|
||||
/// type ReactiveType = UserReactive;
|
||||
/// fn as_reactive(self) -> UserReactive {
|
||||
/// UserReactive {
|
||||
/// id: RwSignal::new(self.id),
|
||||
/// name: RwSignal::new(self.name)
|
||||
/// }
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
pub trait AsReactive {
|
||||
/// The type of the reactive struct. It must implement `ReactiveCapture`.
|
||||
type ReactiveType: ReactiveCapture;
|
||||
|
||||
/// Wraps all fields of the struct into an `RwSignal`, returning a new
|
||||
/// "reactive" struct.
|
||||
///
|
||||
/// Note that this method consumes the original struct and returns a new
|
||||
/// reactive struct.
|
||||
fn as_reactive(self) -> Self::ReactiveType;
|
||||
}
|
||||
|
||||
/// Trait that ensures a reactive struct can be captured into a non-reactive struct.
|
||||
/// The "captured" struct does not contain *any* reactive fields, meaning that it is not
|
||||
/// wrapped in an `RwSignal`.
|
||||
///
|
||||
/// The captured struct should simply collect all the values from the reactive fields at
|
||||
/// that point in time.
|
||||
///
|
||||
/// For example:
|
||||
///
|
||||
/// ```rust
|
||||
/// struct User {
|
||||
/// id: i32,
|
||||
/// name: String
|
||||
/// }
|
||||
///
|
||||
/// struct UserReactive {
|
||||
/// id: RwSignal<i32>,
|
||||
/// name: RwSignal<String>
|
||||
/// }
|
||||
///
|
||||
/// impl AsReactive for User {
|
||||
/// // implement - required for CaptureType.
|
||||
/// }
|
||||
///
|
||||
/// impl ReactiveCapture for UserReactive {
|
||||
/// type CaptureType = User;
|
||||
/// fn capture(&self) -> User {
|
||||
/// User {
|
||||
/// id: self.id.get(),
|
||||
/// name: self.name.get()
|
||||
/// }
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
pub trait ReactiveCapture {
|
||||
/// The type of the captured struct. It must implement `AsReactive`.
|
||||
type CaptureType: AsReactive;
|
||||
|
||||
/// Captures the current state of the reactive struct into a non-reactive struct.
|
||||
fn capture(&self) -> Self::CaptureType;
|
||||
}
|
||||
Reference in new issue
Block a user