Feat: mixed bag

This commit is contained in:
2026-02-25 20:31:36 +01:00
parent a6ff19bb08
commit 0119988d7c
25 changed files with 246 additions and 10 deletions

View File

@@ -283,6 +283,7 @@ pub struct Pattern {
pub length: usize,
pub speed: PatternSpeed,
pub name: Option<String>,
pub description: Option<String>,
pub quantization: LaunchQuantization,
pub sync_mode: SyncMode,
pub follow_up: FollowUp,
@@ -317,6 +318,8 @@ struct SparsePattern {
speed: PatternSpeed,
#[serde(default, skip_serializing_if = "Option::is_none")]
name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
description: Option<String>,
#[serde(default, skip_serializing_if = "is_default_quantization")]
quantization: LaunchQuantization,
#[serde(default, skip_serializing_if = "is_default_sync_mode")]
@@ -342,6 +345,8 @@ struct LegacyPattern {
#[serde(default)]
name: Option<String>,
#[serde(default)]
description: Option<String>,
#[serde(default)]
quantization: LaunchQuantization,
#[serde(default)]
sync_mode: SyncMode,
@@ -370,6 +375,7 @@ impl Serialize for Pattern {
length: self.length,
speed: self.speed,
name: self.name.clone(),
description: self.description.clone(),
quantization: self.quantization,
sync_mode: self.sync_mode,
follow_up: self.follow_up,
@@ -405,6 +411,7 @@ impl<'de> Deserialize<'de> for Pattern {
length: sparse.length,
speed: sparse.speed,
name: sparse.name,
description: sparse.description,
quantization: sparse.quantization,
sync_mode: sparse.sync_mode,
follow_up: sparse.follow_up,
@@ -415,6 +422,7 @@ impl<'de> Deserialize<'de> for Pattern {
length: legacy.length,
speed: legacy.speed,
name: legacy.name,
description: legacy.description,
quantization: legacy.quantization,
sync_mode: legacy.sync_mode,
follow_up: legacy.follow_up,
@@ -430,6 +438,7 @@ impl Default for Pattern {
length: DEFAULT_LENGTH,
speed: PatternSpeed::default(),
name: None,
description: None,
quantization: LaunchQuantization::default(),
sync_mode: SyncMode::default(),
follow_up: FollowUp::default(),