diff --git a/musicxml/src/datatypes/above_below.rs b/musicxml/src/datatypes/above_below.rs index f37cacd..c0e311c 100644 --- a/musicxml/src/datatypes/above_below.rs +++ b/musicxml/src/datatypes/above_below.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to indicate whether one element appears above or below another element. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum AboveBelow { /// This element appears above the reference element. Above, diff --git a/musicxml/src/datatypes/accidental_value.rs b/musicxml/src/datatypes/accidental_value.rs index 011123e..0101a06 100644 --- a/musicxml/src/datatypes/accidental_value.rs +++ b/musicxml/src/datatypes/accidental_value.rs @@ -13,7 +13,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// `smufl` attribute to specify a particular Standard Music Font Layout (SMuFL) accidental. /// /// The `smufl` attribute may be used with any accidental value to help specify the appearance of symbols that share the same MusicXML semantics. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum AccidentalValue { /// Sharp, diff --git a/musicxml/src/datatypes/accordion_middle.rs b/musicxml/src/datatypes/accordion_middle.rs index 6992030..0b70c3c 100644 --- a/musicxml/src/datatypes/accordion_middle.rs +++ b/musicxml/src/datatypes/accordion_middle.rs @@ -12,7 +12,7 @@ use musicxml_macros::DatatypeSerialize; /// **Minimum allowed value:** 1 /// /// **Maximum allowed value:** 3 -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct AccordionMiddle(pub u8); impl Deref for AccordionMiddle { diff --git a/musicxml/src/datatypes/anyuri.rs b/musicxml/src/datatypes/anyuri.rs index b6d3d08..96cc564 100644 --- a/musicxml/src/datatypes/anyuri.rs +++ b/musicxml/src/datatypes/anyuri.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#anyURI). /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct AnyUri(pub String); impl Deref for AnyUri { diff --git a/musicxml/src/datatypes/arrow_direction.rs b/musicxml/src/datatypes/arrow_direction.rs index c4a4061..c11f1c9 100644 --- a/musicxml/src/datatypes/arrow_direction.rs +++ b/musicxml/src/datatypes/arrow_direction.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the direction in which an arrow points, using Unicode arrow terminology. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum ArrowDirection { /// ![Down](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/arrow-direction-down.png) Down, diff --git a/musicxml/src/datatypes/arrow_style.rs b/musicxml/src/datatypes/arrow_style.rs index 2c6467b..a9b3eda 100644 --- a/musicxml/src/datatypes/arrow_style.rs +++ b/musicxml/src/datatypes/arrow_style.rs @@ -8,7 +8,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// [Paired][ArrowStyle::Paired] arrows are duplicate [Single][ArrowStyle::Single] arrows in the same direction. /// [Combined][ArrowStyle::Combined] arrows apply to [Double][ArrowStyle::Double] direction arrows like left right, /// indicating that an arrow in one direction should be combined with an arrow in the other direction. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum ArrowStyle { /// ![Combined](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/arrow-style-combined.png) Combined, diff --git a/musicxml/src/datatypes/backward_forward.rs b/musicxml/src/datatypes/backward_forward.rs index 8ca8bd7..d47991d 100644 --- a/musicxml/src/datatypes/backward_forward.rs +++ b/musicxml/src/datatypes/backward_forward.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// /// The start of the repeat has a [Forward][BackwardForward::Forward] direction while /// the end of the repeat has a [Backward][BackwardForward::Backward] direction. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum BackwardForward { /// ![Backward](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/backward-forward-backward.png) Backward, diff --git a/musicxml/src/datatypes/bar_style.rs b/musicxml/src/datatypes/bar_style.rs index 14ad570..c2a57ba 100644 --- a/musicxml/src/datatypes/bar_style.rs +++ b/musicxml/src/datatypes/bar_style.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents barline style information. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum BarStyle { /// ![Dashed](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/bar-style-dashed.png) Dashed, diff --git a/musicxml/src/datatypes/beam_level.rs b/musicxml/src/datatypes/beam_level.rs index e6e3473..d1648e5 100644 --- a/musicxml/src/datatypes/beam_level.rs +++ b/musicxml/src/datatypes/beam_level.rs @@ -9,7 +9,7 @@ use musicxml_macros::DatatypeSerialize; /// It does not distinguish overlapping beams, such as grace notes within regular notes, or beams used in different voices. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct BeamLevel(pub u8); impl Deref for BeamLevel { diff --git a/musicxml/src/datatypes/beam_value.rs b/musicxml/src/datatypes/beam_value.rs index 2e5ced3..2b61cf6 100644 --- a/musicxml/src/datatypes/beam_value.rs +++ b/musicxml/src/datatypes/beam_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the type of beam associated with each of 8 beam levels (up to 1024th notes) available for each note. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum BeamValue { /// ![BackwardHook](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/beam-value-backward-hook.png) #[rename("backward hook")] diff --git a/musicxml/src/datatypes/beater_value.rs b/musicxml/src/datatypes/beater_value.rs index f018638..207eb70 100644 --- a/musicxml/src/datatypes/beater_value.rs +++ b/musicxml/src/datatypes/beater_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents pictograms for beaters, mallets, and sticks that do not have different materials represented in the pictogram. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum BeaterValue { /// Bow, diff --git a/musicxml/src/datatypes/bend_shape.rs b/musicxml/src/datatypes/bend_shape.rs index 6ec80ba..de14fbe 100644 --- a/musicxml/src/datatypes/bend_shape.rs +++ b/musicxml/src/datatypes/bend_shape.rs @@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Distinguishes between the [Angled][BendShape::Angled] bend symbols commonly used in standard notation /// and the [Curved][BendShape::Curved] bend symbols commonly used in both tablature and standard notation. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum BendShape { /// ![Angled](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/bend-shape-angled.png) Angled, diff --git a/musicxml/src/datatypes/breath_mark_value.rs b/musicxml/src/datatypes/breath_mark_value.rs index 20daa49..b52eb74 100644 --- a/musicxml/src/datatypes/breath_mark_value.rs +++ b/musicxml/src/datatypes/breath_mark_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the symbol used for a breath mark. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum BreathMarkValue { /// Comma, diff --git a/musicxml/src/datatypes/caesura_value.rs b/musicxml/src/datatypes/caesura_value.rs index e4304a1..0da186c 100644 --- a/musicxml/src/datatypes/caesura_value.rs +++ b/musicxml/src/datatypes/caesura_value.rs @@ -2,7 +2,7 @@ use alloc::string::String; use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; /// Represents the shape of the caesura sign. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum CaesuraValue { /// Normal, diff --git a/musicxml/src/datatypes/cancel_location.rs b/musicxml/src/datatypes/cancel_location.rs index ada61ce..d7516fd 100644 --- a/musicxml/src/datatypes/cancel_location.rs +++ b/musicxml/src/datatypes/cancel_location.rs @@ -8,7 +8,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// [BeforeBarline][CancelLocation::BeforeBarline] and to the left. It is [Left][CancelLocation::Left] if not specified. /// /// For mid-measure key elements, [BeforeBarline][CancelLocation::BeforeBarline] should be treated like [Left][CancelLocation::Left]. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum CancelLocation { /// ![Left](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/cancel-location-left.png) Left, diff --git a/musicxml/src/datatypes/circular_arrow.rs b/musicxml/src/datatypes/circular_arrow.rs index 7ce4619..252394e 100644 --- a/musicxml/src/datatypes/circular_arrow.rs +++ b/musicxml/src/datatypes/circular_arrow.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the direction in which a circular arrow points, using Unicode arrow terminology. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum CircularArrow { /// ![Anticlockwise](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/circular-arrow-anticlockwise.png) Anticlockwise, diff --git a/musicxml/src/datatypes/clef_sign.rs b/musicxml/src/datatypes/clef_sign.rs index 854cc98..ce8f6e6 100644 --- a/musicxml/src/datatypes/clef_sign.rs +++ b/musicxml/src/datatypes/clef_sign.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the different clef symbols. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum ClefSign { /// ![G](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/clef-G.png) #[rename("G")] diff --git a/musicxml/src/datatypes/color.rs b/musicxml/src/datatypes/color.rs index 2ab6bdc..978eec7 100644 --- a/musicxml/src/datatypes/color.rs +++ b/musicxml/src/datatypes/color.rs @@ -14,7 +14,7 @@ use regex::Regex; /// /// As in [SVG 1.1](https://www.w3.org/TR/SVG11/color.html), /// colors are defined in terms of the [sRGB](https://www.color.org/srgb04.xalter) color space (IEC 61966). -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub struct Color { /// Amount of red present in the color (0-127) pub r: u8, diff --git a/musicxml/src/datatypes/comma_separated_text.rs b/musicxml/src/datatypes/comma_separated_text.rs index 8cb9755..86f08be 100644 --- a/musicxml/src/datatypes/comma_separated_text.rs +++ b/musicxml/src/datatypes/comma_separated_text.rs @@ -5,7 +5,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; /// Used to specify a comma-separated list of text elements, as is used by the `font_family` attribute. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct CommaSeparatedText(pub Vec); impl Deref for CommaSeparatedText { diff --git a/musicxml/src/datatypes/css_font_size.rs b/musicxml/src/datatypes/css_font_size.rs index 57858c7..5410116 100644 --- a/musicxml/src/datatypes/css_font_size.rs +++ b/musicxml/src/datatypes/css_font_size.rs @@ -7,7 +7,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// /// In CSS, these refer to an entry in a table of font sizes computed and kept by the user agent. /// The scaling is relative to the reference value of [Medium][CssFontSize::Medium]. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum CssFontSize { /// Scaling factor guideline: 3/5 of [Medium][CssFontSize::Medium]. #[rename("xx-small")] diff --git a/musicxml/src/datatypes/date.rs b/musicxml/src/datatypes/date.rs index 6f28757..26b2162 100644 --- a/musicxml/src/datatypes/date.rs +++ b/musicxml/src/datatypes/date.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use regex::Regex; /// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#date). -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub struct Date { /// The year of the date. pub year: u16, diff --git a/musicxml/src/datatypes/decimal.rs b/musicxml/src/datatypes/decimal.rs index 8cba8cc..b381213 100644 --- a/musicxml/src/datatypes/decimal.rs +++ b/musicxml/src/datatypes/decimal.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#decimal). /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct Decimal(pub f64); impl Eq for Decimal {} diff --git a/musicxml/src/datatypes/degree_symbol_value.rs b/musicxml/src/datatypes/degree_symbol_value.rs index 900d53a..f9aac24 100644 --- a/musicxml/src/datatypes/degree_symbol_value.rs +++ b/musicxml/src/datatypes/degree_symbol_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Indicates which symbol should be used in specifying a degree. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum DegreeSymbolValue { /// Major, diff --git a/musicxml/src/datatypes/degree_type_value.rs b/musicxml/src/datatypes/degree_type_value.rs index fcd28ce..d69e2e5 100644 --- a/musicxml/src/datatypes/degree_type_value.rs +++ b/musicxml/src/datatypes/degree_type_value.rs @@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Indicates whether the current degree element is an addition, alteration, or subtraction /// to the kind of the current chord in the harmony element. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum DegreeTypeValue { /// The degree is an addition to the kind of the current chord. Add, diff --git a/musicxml/src/datatypes/distance_type.rs b/musicxml/src/datatypes/distance_type.rs index 1984c07..0953a45 100644 --- a/musicxml/src/datatypes/distance_type.rs +++ b/musicxml/src/datatypes/distance_type.rs @@ -8,7 +8,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; /// - [Beam][DistanceType::Beam]: The distance between beams. /// - [Hyphen][DistanceType::Hyphen]: The distance between hyphens in lyrics. /// - [Other][DistanceType::Other]: Left as a string so that other application-specific types can be defined. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum DistanceType { /// The distance between beams. Beam, diff --git a/musicxml/src/datatypes/divisions.rs b/musicxml/src/datatypes/divisions.rs index d4a6f0e..4edea89 100644 --- a/musicxml/src/datatypes/divisions.rs +++ b/musicxml/src/datatypes/divisions.rs @@ -8,7 +8,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// It is preferred that these be integer values both for MIDI interoperability and to avoid roundoff errors. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct Divisions(pub i32); impl Deref for Divisions { diff --git a/musicxml/src/datatypes/effect_value.rs b/musicxml/src/datatypes/effect_value.rs index 989b1a9..9c49c15 100644 --- a/musicxml/src/datatypes/effect_value.rs +++ b/musicxml/src/datatypes/effect_value.rs @@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents pictograms for sound effect percussion instruments. /// /// The cannon, lotus flute, and megaphone values are in addition to Stone's list. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum EffectValue { /// Anvil, diff --git a/musicxml/src/datatypes/enclosure_shape.rs b/musicxml/src/datatypes/enclosure_shape.rs index bf89132..af82cf3 100644 --- a/musicxml/src/datatypes/enclosure_shape.rs +++ b/musicxml/src/datatypes/enclosure_shape.rs @@ -7,7 +7,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// A [Bracket][EnclosureShape::Bracket] enclosure is similar to a rectangle with the bottom line missing, /// as is common in jazz notation. An [InvertedBracket][EnclosureShape::InvertedBracket] enclosure is /// similar to a rectangle with the top line missing. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum EnclosureShape { /// ![Rectangle](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/enclosure-shape-rectangle.png) Rectangle, diff --git a/musicxml/src/datatypes/ending_number.rs b/musicxml/src/datatypes/ending_number.rs index 7d18d14..5b40578 100644 --- a/musicxml/src/datatypes/ending_number.rs +++ b/musicxml/src/datatypes/ending_number.rs @@ -11,7 +11,7 @@ use regex::Regex; /// The "zero or more spaces" version is used when software knows that an ending is present, but cannot determine the type of the ending. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)] pub struct EndingNumber(pub String); impl Deref for EndingNumber { diff --git a/musicxml/src/datatypes/fan.rs b/musicxml/src/datatypes/fan.rs index 874c380..0db279e 100644 --- a/musicxml/src/datatypes/fan.rs +++ b/musicxml/src/datatypes/fan.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the type of beam fanning present on a note, used to represent accelerandos and ritardandos. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum Fan { /// ![Accelerando](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/fan-accel.png) Accel, diff --git a/musicxml/src/datatypes/fermata_shape.rs b/musicxml/src/datatypes/fermata_shape.rs index d94e947..66c3e2f 100644 --- a/musicxml/src/datatypes/fermata_shape.rs +++ b/musicxml/src/datatypes/fermata_shape.rs @@ -2,7 +2,7 @@ use alloc::string::String; use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; /// Represents the shape of the fermata sign. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum FermataShape { /// Normal, diff --git a/musicxml/src/datatypes/fifths.rs b/musicxml/src/datatypes/fifths.rs index 0d1582e..9bc3821 100644 --- a/musicxml/src/datatypes/fifths.rs +++ b/musicxml/src/datatypes/fifths.rs @@ -9,7 +9,7 @@ use musicxml_macros::DatatypeSerialize; /// key's placement within the circle of fifths (hence the type name). /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct Fifths(pub i8); impl Deref for Fifths { diff --git a/musicxml/src/datatypes/font_family.rs b/musicxml/src/datatypes/font_family.rs index 84824fc..0547937 100644 --- a/musicxml/src/datatypes/font_family.rs +++ b/musicxml/src/datatypes/font_family.rs @@ -12,7 +12,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; /// The fantasy style refers to decorative text such as found in older German-style printing. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct FontFamily(pub Vec); impl Deref for FontFamily { diff --git a/musicxml/src/datatypes/font_size.rs b/musicxml/src/datatypes/font_size.rs index ee65c26..d4ea0ef 100644 --- a/musicxml/src/datatypes/font_size.rs +++ b/musicxml/src/datatypes/font_size.rs @@ -4,7 +4,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; /// Can be one of the [CSS font sizes](https://www.w3.org/2021/06/musicxml40/musicxml-reference/data-types/css-font-size/) /// or a [decimal](https://www.w3.org/2021/06/musicxml40/musicxml-reference/data-types/xsd-decimal/) point size. -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Copy, Clone)] pub enum FontSize { /// One of the [CSS font sizes](https://www.w3.org/2021/06/musicxml40/musicxml-reference/data-types/css-font-size/). Css(CssFontSize), diff --git a/musicxml/src/datatypes/font_style.rs b/musicxml/src/datatypes/font_style.rs index fc85497..b0cabd4 100644 --- a/musicxml/src/datatypes/font_style.rs +++ b/musicxml/src/datatypes/font_style.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents a simplified version of the [CSS font-style property](https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/#font-prop-desc). -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum FontStyle { /// Normal text. Normal, diff --git a/musicxml/src/datatypes/font_weight.rs b/musicxml/src/datatypes/font_weight.rs index be50ab5..343f60b 100644 --- a/musicxml/src/datatypes/font_weight.rs +++ b/musicxml/src/datatypes/font_weight.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents a simplified version of the [CSS font-weight property](https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/#font-prop-desc). -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum FontWeight { /// Normal text. Normal, diff --git a/musicxml/src/datatypes/glass_value.rs b/musicxml/src/datatypes/glass_value.rs index 1782a86..342797b 100644 --- a/musicxml/src/datatypes/glass_value.rs +++ b/musicxml/src/datatypes/glass_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents pictograms for glass percussion instruments. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum GlassValue { /// #[rename("glass harmonica")] diff --git a/musicxml/src/datatypes/glyph_type.rs b/musicxml/src/datatypes/glyph_type.rs index f5e6160..941dde2 100644 --- a/musicxml/src/datatypes/glyph_type.rs +++ b/musicxml/src/datatypes/glyph_type.rs @@ -2,7 +2,7 @@ use alloc::string::String; use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; /// Defines what type of glyph is being defined in a [Glyph][crate::elements::Glyph] element. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum GlyphType { /// Specifies the glyph to use when a note has a [Rest][crate::elements::Rest] element and a `type` value of quarter. QuarterRest, diff --git a/musicxml/src/datatypes/group_barline_value.rs b/musicxml/src/datatypes/group_barline_value.rs index 199a840..a8919fe 100644 --- a/musicxml/src/datatypes/group_barline_value.rs +++ b/musicxml/src/datatypes/group_barline_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Indicates if the group should have common barlines. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum GroupBarlineValue { /// ![Yes](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/group-barline-value-yes.png) Yes, diff --git a/musicxml/src/datatypes/group_symbol_value.rs b/musicxml/src/datatypes/group_symbol_value.rs index 7044f2d..b26621e 100644 --- a/musicxml/src/datatypes/group_symbol_value.rs +++ b/musicxml/src/datatypes/group_symbol_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Indicates how the symbol for a group or multi-staff part is indicated in the score. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum GroupSymbolValue { /// ![Brace](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/group-symbol-value-brace.png) Brace, diff --git a/musicxml/src/datatypes/handbell_value.rs b/musicxml/src/datatypes/handbell_value.rs index 3bd4084..db4c413 100644 --- a/musicxml/src/datatypes/handbell_value.rs +++ b/musicxml/src/datatypes/handbell_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the type of handbell technique being notated. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum HandbellValue { /// Belltree, diff --git a/musicxml/src/datatypes/harmon_closed_location.rs b/musicxml/src/datatypes/harmon_closed_location.rs index ff73cf8..cdd5aa6 100644 --- a/musicxml/src/datatypes/harmon_closed_location.rs +++ b/musicxml/src/datatypes/harmon_closed_location.rs @@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Indicates which portion of the symbol is filled in when the corresponding /// [HarmonClosedValue][super::HarmonClosedValue] is [Half][super::HarmonClosedValue::Half]. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum HarmonClosedLocation { /// ![Bottom](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/harmon-closed-location-bottom.png) Bottom, diff --git a/musicxml/src/datatypes/harmon_closed_value.rs b/musicxml/src/datatypes/harmon_closed_value.rs index 62ac218..3d8e177 100644 --- a/musicxml/src/datatypes/harmon_closed_value.rs +++ b/musicxml/src/datatypes/harmon_closed_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents whether the harmon mute is closed, open, or half-open. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum HarmonClosedValue { /// Yes, diff --git a/musicxml/src/datatypes/harmony_arrangement.rs b/musicxml/src/datatypes/harmony_arrangement.rs index 3c8f653..6523a0a 100644 --- a/musicxml/src/datatypes/harmony_arrangement.rs +++ b/musicxml/src/datatypes/harmony_arrangement.rs @@ -8,7 +8,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// appears to the right of the first. The [Vertical][HarmonyArrangement::Vertical] value specifies /// that the second element appears below the first. The [Diagonal][HarmonyArrangement::Diagonal] value /// specifies that the second element appears both below and to the right of the first. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum HarmonyArrangement { /// ![Horizontal](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/harmony-arrangement-horizontal.png) Horizontal, diff --git a/musicxml/src/datatypes/harmony_type.rs b/musicxml/src/datatypes/harmony_type.rs index ab47f4c..1a80cd4 100644 --- a/musicxml/src/datatypes/harmony_type.rs +++ b/musicxml/src/datatypes/harmony_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Differentiates different types of harmonies when alternate harmonies are possible. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum HarmonyType { /// Alternate analysis. Alternate, diff --git a/musicxml/src/datatypes/hole_closed_location.rs b/musicxml/src/datatypes/hole_closed_location.rs index 40d2554..b74de76 100644 --- a/musicxml/src/datatypes/hole_closed_location.rs +++ b/musicxml/src/datatypes/hole_closed_location.rs @@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Indicates which portion of the hole is filled in when the corresponding /// [HoleClosedValue][super::HoleClosedValue] is [Half][super::HoleClosedValue::Half]. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum HoleClosedLocation { /// ![Bottom](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/hole-closed-location-bottom.png) Bottom, diff --git a/musicxml/src/datatypes/hole_closed_value.rs b/musicxml/src/datatypes/hole_closed_value.rs index 054fbcd..7cab777 100644 --- a/musicxml/src/datatypes/hole_closed_value.rs +++ b/musicxml/src/datatypes/hole_closed_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents whether the hole is closed, open, or half-open. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum HoleClosedValue { /// Yes, diff --git a/musicxml/src/datatypes/id.rs b/musicxml/src/datatypes/id.rs index f6e298f..0408ee3 100644 --- a/musicxml/src/datatypes/id.rs +++ b/musicxml/src/datatypes/id.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#ID). /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct Id(pub String); impl Deref for Id { diff --git a/musicxml/src/datatypes/idref.rs b/musicxml/src/datatypes/idref.rs index 2363a5a..f54e4b8 100644 --- a/musicxml/src/datatypes/idref.rs +++ b/musicxml/src/datatypes/idref.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#IDREF). /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct IdRef(pub String); impl Deref for IdRef { diff --git a/musicxml/src/datatypes/integer.rs b/musicxml/src/datatypes/integer.rs index 7824791..7f9a113 100644 --- a/musicxml/src/datatypes/integer.rs +++ b/musicxml/src/datatypes/integer.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#integer). /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct Integer(pub i32); impl Deref for Integer { diff --git a/musicxml/src/datatypes/kind_value.rs b/musicxml/src/datatypes/kind_value.rs index 7d0d18a..9a8b48d 100644 --- a/musicxml/src/datatypes/kind_value.rs +++ b/musicxml/src/datatypes/kind_value.rs @@ -7,7 +7,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// [Degree][crate::elements::Degree] elements can then add, subtract, or alter from these starting points. /// /// The 11th and 13th values are usually used as a basis for alteration. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum KindValue { /// Triad: major third, augmented fifth. Augmented, diff --git a/musicxml/src/datatypes/left_center_right.rs b/musicxml/src/datatypes/left_center_right.rs index 8098b41..e3092c1 100644 --- a/musicxml/src/datatypes/left_center_right.rs +++ b/musicxml/src/datatypes/left_center_right.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to define horizontal alignment and text justification. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum LeftCenterRight { /// Left horizontal alignment or justification. Left, diff --git a/musicxml/src/datatypes/left_right.rs b/musicxml/src/datatypes/left_right.rs index 678064b..3d20293 100644 --- a/musicxml/src/datatypes/left_right.rs +++ b/musicxml/src/datatypes/left_right.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to indicate whether one element appears to the left or the right of another element. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum LeftRight { /// This element appears to the left of the reference element. Left, diff --git a/musicxml/src/datatypes/line_end.rs b/musicxml/src/datatypes/line_end.rs index 94f7ed7..cd05050 100644 --- a/musicxml/src/datatypes/line_end.rs +++ b/musicxml/src/datatypes/line_end.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Specifies if there is a jog up or down (or both), an arrow, or nothing at the start or end of a bracket. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum LineEnd { /// ![Up](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/line-end-up.png) Up, diff --git a/musicxml/src/datatypes/line_length.rs b/musicxml/src/datatypes/line_length.rs index 4392970..78f6661 100644 --- a/musicxml/src/datatypes/line_length.rs +++ b/musicxml/src/datatypes/line_length.rs @@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Distinguishes between different line lengths for [Doit][crate::elements::Doit], /// [Falloff][crate::elements::Falloff], [Plop][crate::elements::Plop], /// and [Scoop][crate::elements::Scoop] articulations. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum LineLength { /// Short, diff --git a/musicxml/src/datatypes/line_shape.rs b/musicxml/src/datatypes/line_shape.rs index 62ccc7e..9754cd2 100644 --- a/musicxml/src/datatypes/line_shape.rs +++ b/musicxml/src/datatypes/line_shape.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Distinguishes between straight and curved lines. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum LineShape { /// Straight, diff --git a/musicxml/src/datatypes/line_type.rs b/musicxml/src/datatypes/line_type.rs index fa8b5c4..4e3b09d 100644 --- a/musicxml/src/datatypes/line_type.rs +++ b/musicxml/src/datatypes/line_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Distinguishes between solid, dashed, dotted, and wavy lines. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum LineType { /// ![Dashed](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/line-type-dashed.png) Dashed, diff --git a/musicxml/src/datatypes/line_width_type.rs b/musicxml/src/datatypes/line_width_type.rs index 4dd56f6..588c2cc 100644 --- a/musicxml/src/datatypes/line_width_type.rs +++ b/musicxml/src/datatypes/line_width_type.rs @@ -2,7 +2,7 @@ use alloc::string::String; use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; /// Defines what type of line is being defined in a [LineWidth][crate::elements::LineWidth] element. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum LineWidthType { /// A beam line. Beam, diff --git a/musicxml/src/datatypes/margin_type.rs b/musicxml/src/datatypes/margin_type.rs index 33484bd..41cf613 100644 --- a/musicxml/src/datatypes/margin_type.rs +++ b/musicxml/src/datatypes/margin_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Specifies whether margins apply to even page, odd pages, or both. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum MarginType { /// Margins apply to both even and odd pages. Both, diff --git a/musicxml/src/datatypes/measure_numbering_value.rs b/musicxml/src/datatypes/measure_numbering_value.rs index 5ea7541..285a2ff 100644 --- a/musicxml/src/datatypes/measure_numbering_value.rs +++ b/musicxml/src/datatypes/measure_numbering_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Describes how measure numbers are displayed on this part: no numbers, numbers every measure, or numbers every system. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum MeasureNumberingValue { /// ![None](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/measure-numbering-value-none.png) None, diff --git a/musicxml/src/datatypes/measure_text.rs b/musicxml/src/datatypes/measure_text.rs index c7e1d89..63ccf40 100644 --- a/musicxml/src/datatypes/measure_text.rs +++ b/musicxml/src/datatypes/measure_text.rs @@ -11,7 +11,7 @@ use musicxml_macros::DatatypeSerialize; /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. /// /// **Minimum Length**: 1 -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)] pub struct MeasureText(pub String); impl Deref for MeasureText { diff --git a/musicxml/src/datatypes/membrane_value.rs b/musicxml/src/datatypes/membrane_value.rs index a2a0cfe..121cbfd 100644 --- a/musicxml/src/datatypes/membrane_value.rs +++ b/musicxml/src/datatypes/membrane_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents pictograms for membrane percussion instruments. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum MembraneValue { /// #[rename("bass drum")] diff --git a/musicxml/src/datatypes/metal_value.rs b/musicxml/src/datatypes/metal_value.rs index 8e5402c..2c2a267 100644 --- a/musicxml/src/datatypes/metal_value.rs +++ b/musicxml/src/datatypes/metal_value.rs @@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents pictograms for metal percussion instruments. /// /// The hi-hat value refers to a pictogram like high-hat cymbals, but without the long vertical line at the bottom. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum MetalValue { /// Agogo, diff --git a/musicxml/src/datatypes/midi_128.rs b/musicxml/src/datatypes/midi_128.rs index b2db428..f1d220b 100644 --- a/musicxml/src/datatypes/midi_128.rs +++ b/musicxml/src/datatypes/midi_128.rs @@ -12,7 +12,7 @@ use musicxml_macros::DatatypeSerialize; /// **Minimum Value**: 1 /// /// **Maximum Value**: 128 -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct Midi128(pub u8); impl Deref for Midi128 { diff --git a/musicxml/src/datatypes/midi_16.rs b/musicxml/src/datatypes/midi_16.rs index 313d4a5..bd90dab 100644 --- a/musicxml/src/datatypes/midi_16.rs +++ b/musicxml/src/datatypes/midi_16.rs @@ -10,7 +10,7 @@ use musicxml_macros::DatatypeSerialize; /// **Minimum Value**: 1 /// /// **Maximum Value**: 16 -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct Midi16(pub u8); impl Deref for Midi16 { diff --git a/musicxml/src/datatypes/midi_16384.rs b/musicxml/src/datatypes/midi_16384.rs index 291e848..aa946f9 100644 --- a/musicxml/src/datatypes/midi_16384.rs +++ b/musicxml/src/datatypes/midi_16384.rs @@ -12,7 +12,7 @@ use musicxml_macros::DatatypeSerialize; /// **Minimum Value**: 1 /// /// **Maximum Value**: 16384 -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct Midi16384(pub u16); impl Deref for Midi16384 { diff --git a/musicxml/src/datatypes/millimeters.rs b/musicxml/src/datatypes/millimeters.rs index 366d757..906fb0f 100644 --- a/musicxml/src/datatypes/millimeters.rs +++ b/musicxml/src/datatypes/millimeters.rs @@ -8,7 +8,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// This is used in the [Scaling][crate::elements::Scaling] element to provide a default scaling from tenths to physical units. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct Millimeters(pub f64); impl Eq for Millimeters {} diff --git a/musicxml/src/datatypes/milliseconds.rs b/musicxml/src/datatypes/milliseconds.rs index 57a6917..687de31 100644 --- a/musicxml/src/datatypes/milliseconds.rs +++ b/musicxml/src/datatypes/milliseconds.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents an integral number of milliseconds. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct Milliseconds(pub u32); impl Deref for Milliseconds { diff --git a/musicxml/src/datatypes/mode.rs b/musicxml/src/datatypes/mode.rs index ae22d93..12d2890 100644 --- a/musicxml/src/datatypes/mode.rs +++ b/musicxml/src/datatypes/mode.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to specify major/minor and other mode distinctions. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum Mode { /// Major mode. Major, diff --git a/musicxml/src/datatypes/mute.rs b/musicxml/src/datatypes/mute.rs index 861c625..03d855c 100644 --- a/musicxml/src/datatypes/mute.rs +++ b/musicxml/src/datatypes/mute.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// /// The [On][Mute::On] and [Off][Mute::Off] values are used for undifferentiated mutes. /// The remaining values represent specific mutes. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum Mute { /// Represents an on-mute. On, diff --git a/musicxml/src/datatypes/nmtoken.rs b/musicxml/src/datatypes/nmtoken.rs index f36b4b9..6a22b84 100644 --- a/musicxml/src/datatypes/nmtoken.rs +++ b/musicxml/src/datatypes/nmtoken.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#NMTOKEN). /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct NmToken(pub String); impl Deref for NmToken { diff --git a/musicxml/src/datatypes/non_negative_decimal.rs b/musicxml/src/datatypes/non_negative_decimal.rs index 2b0cec3..173ec9f 100644 --- a/musicxml/src/datatypes/non_negative_decimal.rs +++ b/musicxml/src/datatypes/non_negative_decimal.rs @@ -8,7 +8,7 @@ use musicxml_macros::DatatypeSerialize; /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. /// /// **Minimum value:** 0.0 -#[derive(Debug, PartialEq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Copy, Clone, DatatypeSerialize)] pub struct NonNegativeDecimal(pub f64); impl Eq for NonNegativeDecimal {} diff --git a/musicxml/src/datatypes/non_negative_integer.rs b/musicxml/src/datatypes/non_negative_integer.rs index 0aba3e6..5201ccd 100644 --- a/musicxml/src/datatypes/non_negative_integer.rs +++ b/musicxml/src/datatypes/non_negative_integer.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#nonNegativeInteger). /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct NonNegativeInteger(pub u32); impl Deref for NonNegativeInteger { diff --git a/musicxml/src/datatypes/note_size_type.rs b/musicxml/src/datatypes/note_size_type.rs index a1dc400..f8c45e2 100644 --- a/musicxml/src/datatypes/note_size_type.rs +++ b/musicxml/src/datatypes/note_size_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Indicates the type of note size being defined by a [NoteSize][crate::elements::NoteSize] element. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum NoteSizeType { /// Used for notes of cue size that do not include a [Grace][crate::elements::Grace] element, whether defined explicitly or implicitly via a [Cue][crate::elements::Cue] element. Cue, diff --git a/musicxml/src/datatypes/note_type_value.rs b/musicxml/src/datatypes/note_type_value.rs index cbcd90d..5a11553 100644 --- a/musicxml/src/datatypes/note_type_value.rs +++ b/musicxml/src/datatypes/note_type_value.rs @@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used for the MusicXML [Type][crate::elements::Type] element and represents the graphic note type, /// from 1024th (shortest) to maxima (longest). -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum NoteTypeValue { /// ![Maxima](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/note-type-maxima.png) Maxima, diff --git a/musicxml/src/datatypes/notehead_value.rs b/musicxml/src/datatypes/notehead_value.rs index cd02e6b..9f866c9 100644 --- a/musicxml/src/datatypes/notehead_value.rs +++ b/musicxml/src/datatypes/notehead_value.rs @@ -19,7 +19,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// that share the same MusicXML semantics. Noteheads in the SMuFL Note name noteheads and Note name noteheads /// supplement ranges (U+E150–U+E1AF and U+EEE0–U+EEFF) should not use the `smufl` attribute or the "other" value, /// but instead use the [NoteheadText][crate::elements::NoteheadText] element. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum NoteheadValue { /// ![ArrowDown](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/notehead-value-arrow-down.png) #[rename("arrow down")] diff --git a/musicxml/src/datatypes/number_level.rs b/musicxml/src/datatypes/number_level.rs index ab6f048..49b7bcb 100644 --- a/musicxml/src/datatypes/number_level.rs +++ b/musicxml/src/datatypes/number_level.rs @@ -34,7 +34,7 @@ use musicxml_macros::DatatypeSerialize; /// **Minimum value**: 1 /// /// **Maximum value**: 16 -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct NumberLevel(pub u8); impl Deref for NumberLevel { diff --git a/musicxml/src/datatypes/number_of_lines.rs b/musicxml/src/datatypes/number_of_lines.rs index 7ff186d..5b719b9 100644 --- a/musicxml/src/datatypes/number_of_lines.rs +++ b/musicxml/src/datatypes/number_of_lines.rs @@ -10,7 +10,7 @@ use musicxml_macros::DatatypeSerialize; /// **Minimum value**: 0 /// /// **Maximum value**: 3 -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct NumberOfLines(pub u8); impl Deref for NumberOfLines { diff --git a/musicxml/src/datatypes/number_or_normal.rs b/musicxml/src/datatypes/number_or_normal.rs index 7079182..7b56125 100644 --- a/musicxml/src/datatypes/number_or_normal.rs +++ b/musicxml/src/datatypes/number_or_normal.rs @@ -4,7 +4,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; /// Can be either a decimal number or the string "normal". /// /// This is used by the `line_height` and `letter_spacing` attributes. -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Copy, Clone)] pub enum NumberOrNormal { /// Represents the string "normal". Normal, diff --git a/musicxml/src/datatypes/numeral_mode.rs b/musicxml/src/datatypes/numeral_mode.rs index c10311e..cc2b9dd 100644 --- a/musicxml/src/datatypes/numeral_mode.rs +++ b/musicxml/src/datatypes/numeral_mode.rs @@ -9,7 +9,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// melodic minor value sharpens both 6 and 7. If a minor mode is used without /// qualification, either in the [Mode][crate::elements::Mode] or [NumeralMode][crate::elements::NumeralMode] /// elements, natural minor is used. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum NumeralMode { /// Numerals are interpreted relative to a harmonic minor scale with a raised 7th degree. #[rename("harmonic minor")] diff --git a/musicxml/src/datatypes/numeral_value.rs b/musicxml/src/datatypes/numeral_value.rs index 9ecaddb..e2ac597 100644 --- a/musicxml/src/datatypes/numeral_value.rs +++ b/musicxml/src/datatypes/numeral_value.rs @@ -10,7 +10,7 @@ use musicxml_macros::DatatypeSerialize; /// **Minimum value**: 1 /// /// **Maximum value**: 7 -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct NumeralValue(pub u8); impl Deref for NumeralValue { diff --git a/musicxml/src/datatypes/octave.rs b/musicxml/src/datatypes/octave.rs index 46c35a1..3824dfe 100644 --- a/musicxml/src/datatypes/octave.rs +++ b/musicxml/src/datatypes/octave.rs @@ -6,7 +6,7 @@ use musicxml_macros::DatatypeSerialize; /// Represents octaves by the numbers 0 to 9, where 4 indicates the octave started by middle C. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct Octave(pub u8); impl Deref for Octave { diff --git a/musicxml/src/datatypes/on_off.rs b/musicxml/src/datatypes/on_off.rs index e967d7a..93fde72 100644 --- a/musicxml/src/datatypes/on_off.rs +++ b/musicxml/src/datatypes/on_off.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Ued for notation elements such as string mutes. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum OnOff { /// Represents the "on" state. On, diff --git a/musicxml/src/datatypes/over_under.rs b/musicxml/src/datatypes/over_under.rs index 4b807d2..9d334f8 100644 --- a/musicxml/src/datatypes/over_under.rs +++ b/musicxml/src/datatypes/over_under.rs @@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to indicate whether the tips of curved lines such as slurs and ties /// are overhand (tips down) or underhand (tips up). -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum OverUnder { /// Tips of curved lines are overhand (tips down). Over, diff --git a/musicxml/src/datatypes/pedal_type.rs b/musicxml/src/datatypes/pedal_type.rs index 9c5dc0d..fb8c56f 100644 --- a/musicxml/src/datatypes/pedal_type.rs +++ b/musicxml/src/datatypes/pedal_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Distinguishes types of pedal directions. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum PedalType { /// Indicates the start of a damper pedal. Start, diff --git a/musicxml/src/datatypes/percent.rs b/musicxml/src/datatypes/percent.rs index 0492c00..6706580 100644 --- a/musicxml/src/datatypes/percent.rs +++ b/musicxml/src/datatypes/percent.rs @@ -10,7 +10,7 @@ use musicxml_macros::DatatypeSerialize; /// **Minimum value:** 0.0 /// /// **Maximum value:** 100.0 -#[derive(Debug, PartialEq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Copy, Clone, DatatypeSerialize)] pub struct Percent(pub f64); impl Eq for Percent {} diff --git a/musicxml/src/datatypes/pitched_value.rs b/musicxml/src/datatypes/pitched_value.rs index fb2f88b..525e3ed 100644 --- a/musicxml/src/datatypes/pitched_value.rs +++ b/musicxml/src/datatypes/pitched_value.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// /// The [Chimes][PitchedValue::Chimes] and [TubularChimes][PitchedValue::TubularChimes] values /// distinguish the single-line and double-line versions of the pictogram. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum PitchedValue { /// Celesta, diff --git a/musicxml/src/datatypes/positive_divisions.rs b/musicxml/src/datatypes/positive_divisions.rs index a217cd4..6180d65 100644 --- a/musicxml/src/datatypes/positive_divisions.rs +++ b/musicxml/src/datatypes/positive_divisions.rs @@ -8,7 +8,7 @@ use musicxml_macros::DatatypeSerialize; /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. /// /// **Minimum value**: 1 -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct PositiveDivisions(pub u32); impl Deref for PositiveDivisions { diff --git a/musicxml/src/datatypes/positive_integer.rs b/musicxml/src/datatypes/positive_integer.rs index bd8a36b..24250bd 100644 --- a/musicxml/src/datatypes/positive_integer.rs +++ b/musicxml/src/datatypes/positive_integer.rs @@ -6,7 +6,7 @@ use musicxml_macros::DatatypeSerialize; /// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#positiveInteger). /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct PositiveInteger(pub u32); impl Deref for PositiveInteger { diff --git a/musicxml/src/datatypes/positive_integer_or_empty.rs b/musicxml/src/datatypes/positive_integer_or_empty.rs index c44c01a..753e0b2 100644 --- a/musicxml/src/datatypes/positive_integer_or_empty.rs +++ b/musicxml/src/datatypes/positive_integer_or_empty.rs @@ -2,7 +2,7 @@ use alloc::string::{String, ToString}; use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; /// Represents a positive integer or an empty value. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum PositiveIntegerOrEmpty { /// Represents an empty value. Empty, diff --git a/musicxml/src/datatypes/principal_voice_symbol.rs b/musicxml/src/datatypes/principal_voice_symbol.rs index 3679c00..c46d00e 100644 --- a/musicxml/src/datatypes/principal_voice_symbol.rs +++ b/musicxml/src/datatypes/principal_voice_symbol.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the type of symbol used to indicate a principal or secondary voice. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum PrincipalVoiceSymbol { /// #[rename("Hauptstimme")] diff --git a/musicxml/src/datatypes/right_left_middle.rs b/musicxml/src/datatypes/right_left_middle.rs index 80e339e..7a1a402 100644 --- a/musicxml/src/datatypes/right_left_middle.rs +++ b/musicxml/src/datatypes/right_left_middle.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to specify barline location. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum RightLeftMiddle { /// Right barline. Right, diff --git a/musicxml/src/datatypes/rotation_degrees.rs b/musicxml/src/datatypes/rotation_degrees.rs index 55a90b8..479e344 100644 --- a/musicxml/src/datatypes/rotation_degrees.rs +++ b/musicxml/src/datatypes/rotation_degrees.rs @@ -12,7 +12,7 @@ use musicxml_macros::DatatypeSerialize; /// **Minimum value:** -180.0 /// /// **Maximum value:** 180.0 -#[derive(Debug, PartialEq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Copy, Clone, DatatypeSerialize)] pub struct RotationDegrees(pub f32); impl Eq for RotationDegrees {} diff --git a/musicxml/src/datatypes/semi_pitched.rs b/musicxml/src/datatypes/semi_pitched.rs index 6b62a75..d2e5de9 100644 --- a/musicxml/src/datatypes/semi_pitched.rs +++ b/musicxml/src/datatypes/semi_pitched.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents categories of indefinite pitch for percussion instruments. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum SemiPitched { /// High indefinite pitch. High, diff --git a/musicxml/src/datatypes/semitones.rs b/musicxml/src/datatypes/semitones.rs index 2a469c7..7276ae1 100644 --- a/musicxml/src/datatypes/semitones.rs +++ b/musicxml/src/datatypes/semitones.rs @@ -9,7 +9,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Decimal values like 0.5 (quarter tone sharp) are used for microtones. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct Semitones(pub i16); impl Deref for Semitones { diff --git a/musicxml/src/datatypes/show_frets.rs b/musicxml/src/datatypes/show_frets.rs index cc706b7..ca98ed2 100644 --- a/musicxml/src/datatypes/show_frets.rs +++ b/musicxml/src/datatypes/show_frets.rs @@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Indicates whether to show tablature frets as numbers (0, 1, 2) or letters (a, b, c). /// /// The default choice is numbers. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum ShowFrets { /// ![Letters](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/show-frets-letters.png) Letters, diff --git a/musicxml/src/datatypes/show_tuplet.rs b/musicxml/src/datatypes/show_tuplet.rs index 31ad48b..5732df5 100644 --- a/musicxml/src/datatypes/show_tuplet.rs +++ b/musicxml/src/datatypes/show_tuplet.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// [TupletActual][crate::elements::TupletActual] element, both the /// [TupletActual][crate::elements::TupletActual] or [TupletNormal][crate::elements::TupletNormal] /// elements, or neither. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum ShowTuplet { /// Show only the [TupletActual][crate::elements::TupletActual] element. Actual, diff --git a/musicxml/src/datatypes/smufl_accidental_glyph_name.rs b/musicxml/src/datatypes/smufl_accidental_glyph_name.rs index ec2b39e..b5d89ee 100644 --- a/musicxml/src/datatypes/smufl_accidental_glyph_name.rs +++ b/musicxml/src/datatypes/smufl_accidental_glyph_name.rs @@ -11,7 +11,7 @@ use regex::Regex; /// used at the start of glyph names for SMuFL accidentals. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)] pub struct SmuflAccidentalGlyphName(pub String); impl Deref for SmuflAccidentalGlyphName { diff --git a/musicxml/src/datatypes/smufl_coda_glyph_name.rs b/musicxml/src/datatypes/smufl_coda_glyph_name.rs index 5cd4d9f..07bb391 100644 --- a/musicxml/src/datatypes/smufl_coda_glyph_name.rs +++ b/musicxml/src/datatypes/smufl_coda_glyph_name.rs @@ -10,7 +10,7 @@ use regex::Regex; /// The value is a SMuFL canonical glyph name that starts with coda. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)] pub struct SmuflCodaGlyphName(pub String); impl Deref for SmuflCodaGlyphName { diff --git a/musicxml/src/datatypes/smufl_glyph_name.rs b/musicxml/src/datatypes/smufl_glyph_name.rs index 7c1416c..69b282b 100644 --- a/musicxml/src/datatypes/smufl_glyph_name.rs +++ b/musicxml/src/datatypes/smufl_glyph_name.rs @@ -9,7 +9,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// standard piano pedal mark would be "keyboardPedalPed", not U+E650. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct SmuflGlyphName(pub String); impl Deref for SmuflGlyphName { diff --git a/musicxml/src/datatypes/smufl_lyrics_glyph_name.rs b/musicxml/src/datatypes/smufl_lyrics_glyph_name.rs index a3f1f3d..b11021e 100644 --- a/musicxml/src/datatypes/smufl_lyrics_glyph_name.rs +++ b/musicxml/src/datatypes/smufl_lyrics_glyph_name.rs @@ -10,7 +10,7 @@ use regex::Regex; /// The value is a SMuFL canonical glyph name that starts with lyrics. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)] pub struct SmuflLyricsGlyphName(pub String); impl Deref for SmuflLyricsGlyphName { diff --git a/musicxml/src/datatypes/smufl_pictogram_glyph_name.rs b/musicxml/src/datatypes/smufl_pictogram_glyph_name.rs index e9c72bc..2b29295 100644 --- a/musicxml/src/datatypes/smufl_pictogram_glyph_name.rs +++ b/musicxml/src/datatypes/smufl_pictogram_glyph_name.rs @@ -10,7 +10,7 @@ use regex::Regex; /// The value is a SMuFL canonical glyph name that starts with pict. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)] pub struct SmuflPictogramGlyphName(pub String); impl Deref for SmuflPictogramGlyphName { diff --git a/musicxml/src/datatypes/smufl_segno_glyph_name.rs b/musicxml/src/datatypes/smufl_segno_glyph_name.rs index ab14c56..4e838b3 100644 --- a/musicxml/src/datatypes/smufl_segno_glyph_name.rs +++ b/musicxml/src/datatypes/smufl_segno_glyph_name.rs @@ -10,7 +10,7 @@ use regex::Regex; /// The value is a SMuFL canonical glyph name that starts with segno. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)] pub struct SmuflSegnoGlyphName(pub String); impl Deref for SmuflSegnoGlyphName { diff --git a/musicxml/src/datatypes/smufl_wavy_line_glyph_name.rs b/musicxml/src/datatypes/smufl_wavy_line_glyph_name.rs index 28198a1..b311451 100644 --- a/musicxml/src/datatypes/smufl_wavy_line_glyph_name.rs +++ b/musicxml/src/datatypes/smufl_wavy_line_glyph_name.rs @@ -12,7 +12,7 @@ use regex::Regex; /// lines range, excluding the beam glyphs. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)] pub struct SmuflWavyLineGlyphName(pub String); impl Deref for SmuflWavyLineGlyphName { diff --git a/musicxml/src/datatypes/staff_divide_symbol.rs b/musicxml/src/datatypes/staff_divide_symbol.rs index 7069b95..4eabfcc 100644 --- a/musicxml/src/datatypes/staff_divide_symbol.rs +++ b/musicxml/src/datatypes/staff_divide_symbol.rs @@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used for staff division symbols. /// /// The down, up, and up-down values correspond to SMuFL code points U+E00B, U+E00C, and U+E00D respectively. -#[derive(Debug, Default, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum StaffDivideSymbol { /// Down, diff --git a/musicxml/src/datatypes/staff_line.rs b/musicxml/src/datatypes/staff_line.rs index 0a63cf7..9c15cb6 100644 --- a/musicxml/src/datatypes/staff_line.rs +++ b/musicxml/src/datatypes/staff_line.rs @@ -9,7 +9,7 @@ use musicxml_macros::DatatypeSerialize; /// Staff lines are numbered from bottom to top, with 1 being the bottom line on a staff. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct StaffLine(pub u8); impl Deref for StaffLine { diff --git a/musicxml/src/datatypes/staff_line_position.rs b/musicxml/src/datatypes/staff_line_position.rs index ed2e954..3ca8c9b 100644 --- a/musicxml/src/datatypes/staff_line_position.rs +++ b/musicxml/src/datatypes/staff_line_position.rs @@ -9,7 +9,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// A [StaffLinePosition] value can extend beyond the range of the lines on the current staff. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct StaffLinePosition(pub i16); impl Deref for StaffLinePosition { diff --git a/musicxml/src/datatypes/staff_number.rs b/musicxml/src/datatypes/staff_number.rs index e9c6e1c..2e4fb53 100644 --- a/musicxml/src/datatypes/staff_number.rs +++ b/musicxml/src/datatypes/staff_number.rs @@ -9,7 +9,7 @@ use musicxml_macros::DatatypeSerialize; /// Staves are numbered from top to bottom, with 1 being the top staff on a part. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct StaffNumber(pub u8); impl Deref for StaffNumber { diff --git a/musicxml/src/datatypes/staff_type.rs b/musicxml/src/datatypes/staff_type.rs index 716a75e..42f3da7 100644 --- a/musicxml/src/datatypes/staff_type.rs +++ b/musicxml/src/datatypes/staff_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Specifies different uses for the staff. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum StaffType { /// Shares the same music as the prior staff, but displayed differently /// (e.g., treble and bass clef, standard notation and tablature). It is not included in playback. diff --git a/musicxml/src/datatypes/start_note.rs b/musicxml/src/datatypes/start_note.rs index 9515eac..ac0d281 100644 --- a/musicxml/src/datatypes/start_note.rs +++ b/musicxml/src/datatypes/start_note.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Describes the starting note of trills and mordents for playback, relative to the current note. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum StartNote { /// The trill or mordent starts on the note below the current note. Below, diff --git a/musicxml/src/datatypes/start_stop.rs b/musicxml/src/datatypes/start_stop.rs index eafd08a..2a36d5c 100644 --- a/musicxml/src/datatypes/start_stop.rs +++ b/musicxml/src/datatypes/start_stop.rs @@ -12,7 +12,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// /// When multiple elements with the same tag are used within the same note, their order within the MusicXML /// document should match the musical score order. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum StartStop { /// Starting point of an element. Start, diff --git a/musicxml/src/datatypes/start_stop_continue.rs b/musicxml/src/datatypes/start_stop_continue.rs index 94f5cee..73eb56d 100644 --- a/musicxml/src/datatypes/start_stop_continue.rs +++ b/musicxml/src/datatypes/start_stop_continue.rs @@ -15,7 +15,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// match the musical score order. For example, a note that marks both the end of one slur and the start of a new slur /// should have the incoming slur element with a type of [Stop][StartStopContinue::Stop] precede the outgoing slur element /// with a type of [Start][StartStopContinue::Start]. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum StartStopContinue { /// Starting point of an element. Start, diff --git a/musicxml/src/datatypes/start_stop_discontinue.rs b/musicxml/src/datatypes/start_stop_discontinue.rs index 11042e0..4252cc6 100644 --- a/musicxml/src/datatypes/start_stop_discontinue.rs +++ b/musicxml/src/datatypes/start_stop_discontinue.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to specify [Ending][crate::elements::Ending] types. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum StartStopDiscontinue { /// Used with the left barline of the first measure in an ending. Start, diff --git a/musicxml/src/datatypes/start_stop_single.rs b/musicxml/src/datatypes/start_stop_single.rs index 8b0f197..56737a8 100644 --- a/musicxml/src/datatypes/start_stop_single.rs +++ b/musicxml/src/datatypes/start_stop_single.rs @@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used for an attribute of musical elements that can be used for either multi-note or single-note musical elements, as for groupings. /// /// When multiple elements with the same tag are used within the same note, their order within the MusicXML document should match the musical score order. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum StartStopSingle { /// Starting point of a multi-note element. Start, diff --git a/musicxml/src/datatypes/stem_value.rs b/musicxml/src/datatypes/stem_value.rs index 72a1ac8..9165f1a 100644 --- a/musicxml/src/datatypes/stem_value.rs +++ b/musicxml/src/datatypes/stem_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the notated stem direction. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum StemValue { /// ![Down](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/stem-value-down.png) Down, diff --git a/musicxml/src/datatypes/step.rs b/musicxml/src/datatypes/step.rs index 14d59db..e6ff150 100644 --- a/musicxml/src/datatypes/step.rs +++ b/musicxml/src/datatypes/step.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents a step of the diatonic scale, represented using the English letters A through G. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum Step { /// Diatonic scale step A. #[rename("A")] diff --git a/musicxml/src/datatypes/stick_location.rs b/musicxml/src/datatypes/stick_location.rs index 70b8a2e..4f19c25 100644 --- a/musicxml/src/datatypes/stick_location.rs +++ b/musicxml/src/datatypes/stick_location.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents pictograms for the location of sticks, beaters, or mallets on cymbals, gongs, drums, and other instruments. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum StickLocation { /// Center, diff --git a/musicxml/src/datatypes/stick_material.rs b/musicxml/src/datatypes/stick_material.rs index a11a0dc..2381652 100644 --- a/musicxml/src/datatypes/stick_material.rs +++ b/musicxml/src/datatypes/stick_material.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the material being displayed in a stick pictogram. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum StickMaterial { /// Hard, diff --git a/musicxml/src/datatypes/stick_type.rs b/musicxml/src/datatypes/stick_type.rs index f5421e2..b189545 100644 --- a/musicxml/src/datatypes/stick_type.rs +++ b/musicxml/src/datatypes/stick_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the shape of pictograms where the material in the stick, mallet, or beater is represented in the pictogram. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum StickType { /// #[rename("bass drum")] diff --git a/musicxml/src/datatypes/string_number.rs b/musicxml/src/datatypes/string_number.rs index 4900c3e..0cd511f 100644 --- a/musicxml/src/datatypes/string_number.rs +++ b/musicxml/src/datatypes/string_number.rs @@ -9,7 +9,7 @@ use musicxml_macros::DatatypeSerialize; /// Strings are numbered from high to low, with 1 being the highest pitched full-length string. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct StringNumber(pub u8); impl Deref for StringNumber { diff --git a/musicxml/src/datatypes/swing_type_value.rs b/musicxml/src/datatypes/swing_type_value.rs index d802903..a52af4f 100644 --- a/musicxml/src/datatypes/swing_type_value.rs +++ b/musicxml/src/datatypes/swing_type_value.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Specifies the note type, either eighth or 16th, to which the ratio defined in the [Swing][crate::elements::Swing] element is applied. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum SwingTypeValue { /// The [Swing][crate::elements::Swing] ratio applies to 16th notes. #[rename("16th")] diff --git a/musicxml/src/datatypes/syllabic.rs b/musicxml/src/datatypes/syllabic.rs index 671f9d4..c9b3932 100644 --- a/musicxml/src/datatypes/syllabic.rs +++ b/musicxml/src/datatypes/syllabic.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// /// The single, begin, end, and middle values represent single-syllable words, /// word-beginning syllables, word-ending syllables, and mid-word syllables, respectively. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum Syllabic { /// ![Begin](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/syllabic-begin.png) Begin, diff --git a/musicxml/src/datatypes/symbol_size.rs b/musicxml/src/datatypes/symbol_size.rs index f62d6da..6b9d31c 100644 --- a/musicxml/src/datatypes/symbol_size.rs +++ b/musicxml/src/datatypes/symbol_size.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to distinguish between full, cue sized, grace cue sized, and oversized symbols. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum SymbolSize { /// Use a cue-sized symbol, generally smaller than a full-sized symbol. Cue, diff --git a/musicxml/src/datatypes/sync_type.rs b/musicxml/src/datatypes/sync_type.rs index 7d707c5..ae53b8f 100644 --- a/musicxml/src/datatypes/sync_type.rs +++ b/musicxml/src/datatypes/sync_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Specifies the style that a score-following application should use to synchronize an accompaniment with a performer. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum SyncType { /// No synchronization to the performer. None, diff --git a/musicxml/src/datatypes/system_relation.rs b/musicxml/src/datatypes/system_relation.rs index 8d056ff..2edf899 100644 --- a/musicxml/src/datatypes/system_relation.rs +++ b/musicxml/src/datatypes/system_relation.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Distinguishes elements that are associated with a system rather than the particular part where the element appears. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum SystemRelation { /// The element should appear only on the top part of the current system. #[rename("only-top")] diff --git a/musicxml/src/datatypes/system_relation_number.rs b/musicxml/src/datatypes/system_relation_number.rs index ac8c14e..9aaa3f9 100644 --- a/musicxml/src/datatypes/system_relation_number.rs +++ b/musicxml/src/datatypes/system_relation_number.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Distinguishes measure numbers that are associated with a system rather than the particular part where the element appears. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum SystemRelationNumber { /// The number should appear only on the top part of the current system. #[rename("only-top")] diff --git a/musicxml/src/datatypes/tap_hand.rs b/musicxml/src/datatypes/tap_hand.rs index 8dc7ecc..55f8194 100644 --- a/musicxml/src/datatypes/tap_hand.rs +++ b/musicxml/src/datatypes/tap_hand.rs @@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the symbol to use for a tap element. /// /// The left and right values refer to the SMuFL guitarLeftHandTapping and guitarRightHandTapping glyphs respectively. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum TapHand { /// Left, diff --git a/musicxml/src/datatypes/tenths.rs b/musicxml/src/datatypes/tenths.rs index f94335b..75bd571 100644 --- a/musicxml/src/datatypes/tenths.rs +++ b/musicxml/src/datatypes/tenths.rs @@ -17,7 +17,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// [StaffSize][crate::elements::StaffSize] element. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct Tenths(pub f64); impl Eq for Tenths {} diff --git a/musicxml/src/datatypes/text_direction.rs b/musicxml/src/datatypes/text_direction.rs index 7669179..424b83d 100644 --- a/musicxml/src/datatypes/text_direction.rs +++ b/musicxml/src/datatypes/text_direction.rs @@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to adjust and override the Unicode bidirectional text algorithm,similar to the Directionality /// data category in the [W3C Internationalization Tag Set recommendation](https://www.w3.org/TR/2007/REC-its-20070403/#directionality). -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum TextDirection { /// Left-to-right embed. Ltr, diff --git a/musicxml/src/datatypes/tied_type.rs b/musicxml/src/datatypes/tied_type.rs index 85fe12b..c105a51 100644 --- a/musicxml/src/datatypes/tied_type.rs +++ b/musicxml/src/datatypes/tied_type.rs @@ -14,7 +14,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// /// In start-stop cases, ties can add more elements using a [Continue][TiedType::Continue] type. This is /// typically used to specify the formatting of cross-system ties. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum TiedType { /// Start of a tie. Start, diff --git a/musicxml/src/datatypes/time_only.rs b/musicxml/src/datatypes/time_only.rs index f7f240b..11518fb 100644 --- a/musicxml/src/datatypes/time_only.rs +++ b/musicxml/src/datatypes/time_only.rs @@ -13,7 +13,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; /// through the repeated section that the element applies. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct TimeOnly(pub Vec); impl Deref for TimeOnly { diff --git a/musicxml/src/datatypes/time_relation.rs b/musicxml/src/datatypes/time_relation.rs index 390e62b..c0fcc86 100644 --- a/musicxml/src/datatypes/time_relation.rs +++ b/musicxml/src/datatypes/time_relation.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Indicates the symbol used to represent the interchangeable aspect of dual time signatures. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum TimeRelation { /// ![Bracket](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/time-relation-bracket.png) Bracket, diff --git a/musicxml/src/datatypes/time_separator.rs b/musicxml/src/datatypes/time_separator.rs index 4737ba6..964beef 100644 --- a/musicxml/src/datatypes/time_separator.rs +++ b/musicxml/src/datatypes/time_separator.rs @@ -12,7 +12,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// side of the separator line. The [None][TimeSeparator::None] value represents no separator with the beats /// and beat-type arranged vertically. The [Adjacent][TimeSeparator::Adjacent] value represents no /// separator with the beats and beat-type arranged horizontally. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum TimeSeparator { /// ![Adjacent](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/time-separator-adjacent.png) Adjacent, diff --git a/musicxml/src/datatypes/time_symbol.rs b/musicxml/src/datatypes/time_symbol.rs index af942a2..a83d421 100644 --- a/musicxml/src/datatypes/time_symbol.rs +++ b/musicxml/src/datatypes/time_symbol.rs @@ -13,7 +13,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// should be represented with a dotted downstem note that corresponds to three times the /// [BeatType][crate::elements::BeatType] value, and a numerator that is one third the /// [Beats][crate::elements::Beats] value. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum TimeSymbol { /// ![Common](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/time-symbol-common.png) Common, diff --git a/musicxml/src/datatypes/tip_direction.rs b/musicxml/src/datatypes/tip_direction.rs index 419d0b3..44dbcf9 100644 --- a/musicxml/src/datatypes/tip_direction.rs +++ b/musicxml/src/datatypes/tip_direction.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Represents the direction in which the tip of a stick or beater points, using Unicode arrow terminology. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum TipDirection { /// ![Down](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/tip-direction-down.png) Down, diff --git a/musicxml/src/datatypes/token.rs b/musicxml/src/datatypes/token.rs index acf5d4e..4188cf7 100644 --- a/musicxml/src/datatypes/token.rs +++ b/musicxml/src/datatypes/token.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#token). /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct Token(pub String); impl Deref for Token { diff --git a/musicxml/src/datatypes/top_bottom.rs b/musicxml/src/datatypes/top_bottom.rs index 18839ff..00ab771 100644 --- a/musicxml/src/datatypes/top_bottom.rs +++ b/musicxml/src/datatypes/top_bottom.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to indicate the top or bottom part of a vertical shape like [NonArpeggiate][crate::elements::NonArpeggiate]. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum TopBottom { /// Top of the vertical shape. Top, diff --git a/musicxml/src/datatypes/tremolo_marks.rs b/musicxml/src/datatypes/tremolo_marks.rs index e29a1a1..51c7ad1 100644 --- a/musicxml/src/datatypes/tremolo_marks.rs +++ b/musicxml/src/datatypes/tremolo_marks.rs @@ -10,7 +10,7 @@ use musicxml_macros::DatatypeSerialize; /// **Minimum value:** 0 /// /// **Maximum value:** 8 -#[derive(Debug, PartialEq, Eq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)] pub struct TremoloMarks(pub u8); impl Deref for TremoloMarks { diff --git a/musicxml/src/datatypes/tremolo_type.rs b/musicxml/src/datatypes/tremolo_type.rs index 5e19d3e..d6216a8 100644 --- a/musicxml/src/datatypes/tremolo_type.rs +++ b/musicxml/src/datatypes/tremolo_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to distinguish double-note, single-note, and unmeasured tremolos. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum TremoloType { /// Start of a double-note tremolo. Start, diff --git a/musicxml/src/datatypes/trill_beats.rs b/musicxml/src/datatypes/trill_beats.rs index bd547f5..21564bc 100644 --- a/musicxml/src/datatypes/trill_beats.rs +++ b/musicxml/src/datatypes/trill_beats.rs @@ -10,7 +10,7 @@ use musicxml_macros::DatatypeSerialize; /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. /// /// **Minimum value**: 2.0 -#[derive(Debug, PartialEq, DatatypeSerialize)] +#[derive(Debug, PartialEq, Copy, Clone, DatatypeSerialize)] pub struct TrillBeats(pub f64); impl Eq for TrillBeats {} diff --git a/musicxml/src/datatypes/trill_step.rs b/musicxml/src/datatypes/trill_step.rs index 1dc4407..b4ad29f 100644 --- a/musicxml/src/datatypes/trill_step.rs +++ b/musicxml/src/datatypes/trill_step.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Describes the alternating note of trills and mordents for playback, relative to the current note. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum TrillStep { /// Half step from the current note. Half, diff --git a/musicxml/src/datatypes/two_note_turn.rs b/musicxml/src/datatypes/two_note_turn.rs index 1d2ba58..a126a0f 100644 --- a/musicxml/src/datatypes/two_note_turn.rs +++ b/musicxml/src/datatypes/two_note_turn.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Describes the ending notes of trills and mordents for playback, relative to the current note. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum TwoNoteTurn { /// Half step from the current note. Half, diff --git a/musicxml/src/datatypes/up_down.rs b/musicxml/src/datatypes/up_down.rs index eec3652..7222f61 100644 --- a/musicxml/src/datatypes/up_down.rs +++ b/musicxml/src/datatypes/up_down.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used for the direction of arrows and other pointed symbols like vertical accents, indicating which way the tip is pointing. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum UpDown { /// Up, diff --git a/musicxml/src/datatypes/up_down_stop_continue.rs b/musicxml/src/datatypes/up_down_stop_continue.rs index ad4c75d..2105c8c 100644 --- a/musicxml/src/datatypes/up_down_stop_continue.rs +++ b/musicxml/src/datatypes/up_down_stop_continue.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used for octave-shift elements, indicating the direction of the shift from their true pitched values because of printing difficulty. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum UpDownStopContinue { /// Start of an [OctaveShift][crate::elements::OctaveShift] up, such as 8va bassa. Up, diff --git a/musicxml/src/datatypes/upright_inverted.rs b/musicxml/src/datatypes/upright_inverted.rs index bf8b02c..4cc5939 100644 --- a/musicxml/src/datatypes/upright_inverted.rs +++ b/musicxml/src/datatypes/upright_inverted.rs @@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Describes the appearance of a [Fermata][crate::elements::Fermata] element. /// /// The value is [Upright][UprightInverted::Upright] if not specified. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum UprightInverted { /// Upright, diff --git a/musicxml/src/datatypes/valign.rs b/musicxml/src/datatypes/valign.rs index b60193b..7502543 100644 --- a/musicxml/src/datatypes/valign.rs +++ b/musicxml/src/datatypes/valign.rs @@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to indicate vertical alignment to the top, middle, bottom, or baseline of the text. /// /// Defaults are implementation-dependent. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum Valign { /// Aligned to the top of the text. Top, diff --git a/musicxml/src/datatypes/valign_image.rs b/musicxml/src/datatypes/valign_image.rs index 1a1131d..7dc6824 100644 --- a/musicxml/src/datatypes/valign_image.rs +++ b/musicxml/src/datatypes/valign_image.rs @@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to indicate vertical alignment for images and graphics, so it does not include a baseline value. /// /// Defaults are implementation-dependent. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum ValignImage { /// Aligned to the top of the image. Top, diff --git a/musicxml/src/datatypes/wedge_type.rs b/musicxml/src/datatypes/wedge_type.rs index 462f8d1..3f2de8e 100644 --- a/musicxml/src/datatypes/wedge_type.rs +++ b/musicxml/src/datatypes/wedge_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used to specify [Wedge][crate::elements::Wedge] types. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum WedgeType { /// Start of a crescendo [Wedge][crate::elements::Wedge] that is closed on the left side. Crescendo, diff --git a/musicxml/src/datatypes/winged.rs b/musicxml/src/datatypes/winged.rs index 02f333c..6806abb 100644 --- a/musicxml/src/datatypes/winged.rs +++ b/musicxml/src/datatypes/winged.rs @@ -7,7 +7,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// The [Straight][Winged::Straight] and [Curved][Winged::Curved] values represent single wings, while the /// [DoubleStraight][Winged::DoubleStraight] and [DoubleCurved][Winged::DoubleCurved] values represent /// double wings. The [None][Winged::None] value indicates no wings and is the default. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum Winged { /// ![None](https://hedgetechllc.github.io/musicxml/musicxml/datatypes/winged-none.png) None, diff --git a/musicxml/src/datatypes/wood_value.rs b/musicxml/src/datatypes/wood_value.rs index f0735ae..00eeaff 100644 --- a/musicxml/src/datatypes/wood_value.rs +++ b/musicxml/src/datatypes/wood_value.rs @@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// /// The [Maraca][WoodValue::Maraca] and [Maracas][WoodValue::Maracas] values distinguish /// the one- and two-maraca versions of the pictogram. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum WoodValue { /// #[rename("bamboo scraper")] diff --git a/musicxml/src/datatypes/xlink_actuate.rs b/musicxml/src/datatypes/xlink_actuate.rs index bd6a548..52c9487 100644 --- a/musicxml/src/datatypes/xlink_actuate.rs +++ b/musicxml/src/datatypes/xlink_actuate.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// See the definition in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#link-behaviors). -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum XlinkActuate { /// An application should traverse from the starting resource to the ending resource only on a /// post-loading event triggered for the purpose of traversal. This is the default value. diff --git a/musicxml/src/datatypes/xlink_show.rs b/musicxml/src/datatypes/xlink_show.rs index 85a4fe1..7479713 100644 --- a/musicxml/src/datatypes/xlink_show.rs +++ b/musicxml/src/datatypes/xlink_show.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// See the definition in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#link-behaviors). -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum XlinkShow { /// An application traversing to the ending resource should load it in a new window, /// frame, pane, or other relevant presentation context. diff --git a/musicxml/src/datatypes/xlink_type.rs b/musicxml/src/datatypes/xlink_type.rs index 1f54e29..604032b 100644 --- a/musicxml/src/datatypes/xlink_type.rs +++ b/musicxml/src/datatypes/xlink_type.rs @@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// See the definition in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#link-behaviors). /// /// MusicXML only supports the simple type. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum XlinkType { /// See the definition in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#dt-simplelink). Simple, diff --git a/musicxml/src/datatypes/xml_lang.rs b/musicxml/src/datatypes/xml_lang.rs index b2eba37..434fc64 100644 --- a/musicxml/src/datatypes/xml_lang.rs +++ b/musicxml/src/datatypes/xml_lang.rs @@ -8,7 +8,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Language names come from ISO 639, with optional country subcodes from ISO 3166. /// /// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)] pub struct XmlLang(pub String); impl Deref for XmlLang { diff --git a/musicxml/src/datatypes/xml_space.rs b/musicxml/src/datatypes/xml_space.rs index 8c7f1a0..9b97baa 100644 --- a/musicxml/src/datatypes/xml_space.rs +++ b/musicxml/src/datatypes/xml_space.rs @@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// See the definition in the [W3C Extensible Markup Language recommendation](https://www.w3.org/TR/xml/#sec-white-space). -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum XmlSpace { /// See the definition in the [W3C Extensible Markup Language recommendation](https://www.w3.org/TR/xml/#sec-white-space). Default, diff --git a/musicxml/src/datatypes/yes_no.rs b/musicxml/src/datatypes/yes_no.rs index a63bc0f..766b1d2 100644 --- a/musicxml/src/datatypes/yes_no.rs +++ b/musicxml/src/datatypes/yes_no.rs @@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize}; /// Used for boolean-like attributes. /// /// We cannot use W3C XML Schema booleans due to their restrictions on expression of boolean values. -#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)] pub enum YesNo { /// True. Yes, diff --git a/musicxml/src/datatypes/yes_no_number.rs b/musicxml/src/datatypes/yes_no_number.rs index 3d62a50..013937c 100644 --- a/musicxml/src/datatypes/yes_no_number.rs +++ b/musicxml/src/datatypes/yes_no_number.rs @@ -3,7 +3,7 @@ use alloc::string::{String, ToString}; use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer}; /// Used for attributes that can be either boolean or numeric values. -#[derive(Debug, PartialEq)] +#[derive(Debug, PartialEq, Copy, Clone)] pub enum YesNoNumber { /// The value is `yes`. Yes, diff --git a/musicxml/src/datatypes/yyyy_mm_dd.rs b/musicxml/src/datatypes/yyyy_mm_dd.rs index ea8e952..e627f8f 100644 --- a/musicxml/src/datatypes/yyyy_mm_dd.rs +++ b/musicxml/src/datatypes/yyyy_mm_dd.rs @@ -5,7 +5,7 @@ use regex::Regex; /// Represents dates in the yyyy-mm-dd format, following ISO 8601. /// /// This is a W3C XML Schema date type, but without the optional timezone data. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub struct YyyyMmDd { /// The year. pub year: u16, diff --git a/musicxml/src/elements/accent.rs b/musicxml/src/elements/accent.rs index 589e809..058c95e 100644 --- a/musicxml/src/elements/accent.rs +++ b/musicxml/src/elements/accent.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Accent] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct AccentAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct AccentAttributes { /// The [Accent] element indicates a regular horizontal accent mark. /// /// ![Accent](https://hedgetechllc.github.io/musicxml/musicxml/elements/accent.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Accent { /// Element-specific attributes pub attributes: AccentAttributes, diff --git a/musicxml/src/elements/accidental.rs b/musicxml/src/elements/accidental.rs index 0a1c76d..afcd034 100644 --- a/musicxml/src/elements/accidental.rs +++ b/musicxml/src/elements/accidental.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [AccidentalAttributes] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct AccidentalAttributes { /// Specifies whether or not brackets are put around a symbol for an editorial indication. If not specified, it is left to application defaults. pub bracket: Option, @@ -56,7 +56,7 @@ pub struct AccidentalAttributes { /// The [Accidental] element represents actual notated accidentals. /// /// ![Accidental](https://hedgetechllc.github.io/musicxml/musicxml/elements/accidental.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Accidental { /// Element-specific attributes pub attributes: AccidentalAttributes, diff --git a/musicxml/src/elements/accidental_mark.rs b/musicxml/src/elements/accidental_mark.rs index 82cfb25..56b0bcb 100644 --- a/musicxml/src/elements/accidental_mark.rs +++ b/musicxml/src/elements/accidental_mark.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [AccidentalMark] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct AccidentalMarkAttributes { /// Specifies whether or not brackets are put around a symbol for an editorial indication. If not specified, it is left to application defaults. pub bracket: Option, @@ -58,7 +58,7 @@ pub struct AccidentalMarkAttributes { /// ![AccidentalMark](https://hedgetechllc.github.io/musicxml/musicxml/elements/accidental-mark.png) /// /// When used in an ornament, position and placement are relative to the ornament, not relative to the note. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("accidental-mark")] pub struct AccidentalMark { /// Element-specific attributes diff --git a/musicxml/src/elements/accidental_text.rs b/musicxml/src/elements/accidental_text.rs index 756a03c..3c3febf 100644 --- a/musicxml/src/elements/accidental_text.rs +++ b/musicxml/src/elements/accidental_text.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [AccidentalText] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct AccidentalTextAttributes { /// Indicates the color of an element. pub color: Option, @@ -91,7 +91,7 @@ pub struct AccidentalTextAttributes { /// The [AccidentalText] element is used for exact formatting of accidentals in display elements such as [PartNameDisplay][super::PartNameDisplay]. /// /// The` enclosure` attribute is none if not specified. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("accidental-text")] pub struct AccidentalText { /// Element-specific attributes diff --git a/musicxml/src/elements/accord.rs b/musicxml/src/elements/accord.rs index 2e7b467..28a3bb2 100644 --- a/musicxml/src/elements/accord.rs +++ b/musicxml/src/elements/accord.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Accord] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct AccordAttributes { /// Strings are numbered from high to low. pub string: Option, } /// Contents of the [Accord] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct AccordContents { /// Step on a diatonic scale, represented using the English letters A through G. pub tuning_step: TuningStep, @@ -25,7 +25,7 @@ pub struct AccordContents { /// The [Accord] element represents the tuning of a single string in the [Scordatura][super::Scordatura] element. /// /// It uses the same group of elements as the [StaffTuning][super::StaffTuning] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Accord { /// Element-specific attributes pub attributes: AccordAttributes, diff --git a/musicxml/src/elements/accordion_high.rs b/musicxml/src/elements/accordion_high.rs index 9a804f8..89ecba5 100644 --- a/musicxml/src/elements/accordion_high.rs +++ b/musicxml/src/elements/accordion_high.rs @@ -7,7 +7,7 @@ use musicxml_macros::*; /// ![AccordionHigh](https://hedgetechllc.github.io/musicxml/musicxml/elements/accordion-high.png) /// /// This element is omitted if no dot is present. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("accordion-high")] pub struct AccordionHigh { /// Element-specific attributes diff --git a/musicxml/src/elements/accordion_low.rs b/musicxml/src/elements/accordion_low.rs index 9b2ccb5..2043969 100644 --- a/musicxml/src/elements/accordion_low.rs +++ b/musicxml/src/elements/accordion_low.rs @@ -7,7 +7,7 @@ use musicxml_macros::*; /// ![AccordionLow](https://hedgetechllc.github.io/musicxml/musicxml/elements/accordion-low.png) /// /// This element is omitted if no dot is present. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("accordion-low")] pub struct AccordionLow { /// Element-specific attributes diff --git a/musicxml/src/elements/accordion_middle.rs b/musicxml/src/elements/accordion_middle.rs index 6f915a3..1433c6c 100644 --- a/musicxml/src/elements/accordion_middle.rs +++ b/musicxml/src/elements/accordion_middle.rs @@ -7,7 +7,7 @@ use musicxml_macros::*; /// ![AccordionMiddle](https://hedgetechllc.github.io/musicxml/musicxml/elements/accordion-middle.png) /// /// This element is omitted if no dots are present. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("accordion-middle")] pub struct AccordionMiddle { /// Element-specific attributes diff --git a/musicxml/src/elements/accordion_registration.rs b/musicxml/src/elements/accordion_registration.rs index 9eb2e63..b1b319f 100644 --- a/musicxml/src/elements/accordion_registration.rs +++ b/musicxml/src/elements/accordion_registration.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [AccordionRegistration] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct AccordionRegistrationAttributes { /// Indicates the color of an element. pub color: Option, @@ -56,7 +56,7 @@ pub struct AccordionRegistrationAttributes { } /// Contents of the [AccordionRegistration] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct AccordionRegistrationContents { /// The [AccordionHigh] element represents the presence of one or more dots in the high section of the registration symbol. pub accordion_high: Option, @@ -71,7 +71,7 @@ pub struct AccordionRegistrationContents { /// These are circular symbols divided horizontally into high, middle, and low sections that correspond to 4', 8', and 16' pipes. /// Each [AccordionHigh], [AccordionLow], and [AccordionMiddle] element represents the presence of one or more dots in the registration diagram. /// An [AccordionRegistration] element needs to have at least one of the child elements present. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("accordion-registration")] pub struct AccordionRegistration { /// Element-specific attributes diff --git a/musicxml/src/elements/actual_notes.rs b/musicxml/src/elements/actual_notes.rs index 03ff963..eea89d7 100644 --- a/musicxml/src/elements/actual_notes.rs +++ b/musicxml/src/elements/actual_notes.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [ActualNotes] element describes how many notes are played in the time usually occupied by the number in the [NormalNotes][super::NormalNotes] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("actual-notes")] pub struct ActualNotes { /// Element-specific attributes diff --git a/musicxml/src/elements/alter.rs b/musicxml/src/elements/alter.rs index d46a8ae..e87d8bc 100644 --- a/musicxml/src/elements/alter.rs +++ b/musicxml/src/elements/alter.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// The [Alter] element represents chromatic alteration in number of semitones (e.g., -1 for flat, 1 for sharp). /// /// Decimal values like 0.5 (quarter tone sharp) are used for microtones. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Alter { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/appearance.rs b/musicxml/src/elements/appearance.rs index be2beaf..7ec18cd 100644 --- a/musicxml/src/elements/appearance.rs +++ b/musicxml/src/elements/appearance.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Appearance] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct AppearanceContents { /// The [LineWidth] element specifies the width of a line type in tenths. pub line_width: Vec, @@ -22,7 +22,7 @@ pub struct AppearanceContents { /// /// This includes support for line widths, definitions for note sizes, standard distances between notation elements, and Standard Music Font Layout (SMuFL) glyphs, /// plus an extension element for other aspects of appearance. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Appearance { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/arpeggiate.rs b/musicxml/src/elements/arpeggiate.rs index 7779f76..b339169 100644 --- a/musicxml/src/elements/arpeggiate.rs +++ b/musicxml/src/elements/arpeggiate.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Arpeggiate] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ArpeggiateAttributes { /// Indicates the color of an element. pub color: Option, @@ -46,7 +46,7 @@ pub struct ArpeggiateAttributes { /// /// The length of the sign can be determined from the position attributes for the [Arpeggiate] elements used with the /// top and bottom notes of the arpeggiated chord. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Arpeggiate { /// Element-specific attributes pub attributes: ArpeggiateAttributes, diff --git a/musicxml/src/elements/arrow.rs b/musicxml/src/elements/arrow.rs index e53ea27..059499b 100644 --- a/musicxml/src/elements/arrow.rs +++ b/musicxml/src/elements/arrow.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Arrow] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ArrowAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct ArrowAttributes { } /// Contents of the [StraightArrowContents] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct StraightArrowContents { /// The [ArrowDirection] element specifies the direction of the arrow. pub arrow_direction: ArrowDirection, @@ -55,7 +55,7 @@ pub struct StraightArrowContents { } /// Contents of the [CircularArrowContents] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct CircularArrowContents { /// The [CircularArrow] element specifies the direction of the circular arrow. pub circular_arrow: CircularArrow, @@ -64,7 +64,7 @@ pub struct CircularArrowContents { /// Contents of the [Arrow] element. /// /// The [Arrow] element may contain either [StraightArrowContents] or [CircularArrowContents]. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum ArrowContents { /// The [StraightArrowContents] element specifies the direction, style, and arrowhead of a straight arrow. Straight(StraightArrowContents), @@ -98,7 +98,7 @@ impl ContentSerializer for ArrowContents { /// It can represent both Unicode and Standard Music Font Layout (SMuFL) arrows. /// The `smufl` attribute distinguishes different SMuFL glyphs that have an arrow appearance such as "arrowBlackUp," /// "guitarStrumUp," or "handbellsSwingUp." The specified glyph should match the descriptive representation. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Arrow { /// Element-specific attributes pub attributes: ArrowAttributes, diff --git a/musicxml/src/elements/arrow_direction.rs b/musicxml/src/elements/arrow_direction.rs index 71299be..dbe112d 100644 --- a/musicxml/src/elements/arrow_direction.rs +++ b/musicxml/src/elements/arrow_direction.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [ArrowDirection] element represents the direction in which an arrow points, using Unicode arrow terminology. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("arrow-direction")] pub struct ArrowDirection { /// Element-specific attributes diff --git a/musicxml/src/elements/arrow_style.rs b/musicxml/src/elements/arrow_style.rs index bc27c68..dcf4553 100644 --- a/musicxml/src/elements/arrow_style.rs +++ b/musicxml/src/elements/arrow_style.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [ArrowStyle] element represents the style of an arrow, using Unicode arrow terminology. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("arrow-style")] pub struct ArrowStyle { /// Element-specific attributes diff --git a/musicxml/src/elements/arrowhead.rs b/musicxml/src/elements/arrowhead.rs index 63a35d3..264bfe9 100644 --- a/musicxml/src/elements/arrowhead.rs +++ b/musicxml/src/elements/arrowhead.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The presence of an [Arrowhead] element indicates that only the arrowhead is displayed within the [Arrow][super::Arrow], not the arrow stem. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Arrowhead { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/articulations.rs b/musicxml/src/elements/articulations.rs index 083d73b..a9393a3 100644 --- a/musicxml/src/elements/articulations.rs +++ b/musicxml/src/elements/articulations.rs @@ -8,14 +8,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Articulations] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ArticulationsAttributes { /// Specifies an ID that is unique to the entire document. pub id: Option, } /// The [ArticulationsType] element specifies all possible articulations and accents available for use in an [Articulations] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub enum ArticulationsType { /// The [Accent] element indicates a regular accent mark. Accent(Accent), @@ -61,7 +61,7 @@ pub enum ArticulationsType { /// The [Articulations] element groups together articulations and accents. /// /// ![Articulations](https://hedgetechllc.github.io/musicxml/musicxml/elements/articulations.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Articulations { /// Element-specific attributes pub attributes: ArticulationsAttributes, diff --git a/musicxml/src/elements/artificial.rs b/musicxml/src/elements/artificial.rs index d41b72d..72cad51 100644 --- a/musicxml/src/elements/artificial.rs +++ b/musicxml/src/elements/artificial.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Artificial] element indicates that this is an artificial harmonic. /// /// ![Artificial](https://hedgetechllc.github.io/musicxml/musicxml/elements/artificial.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Artificial { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/assess.rs b/musicxml/src/elements/assess.rs index dffc769..e5c81d3 100644 --- a/musicxml/src/elements/assess.rs +++ b/musicxml/src/elements/assess.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Assess] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct AssessAttributes { /// If yes, the note should be assessed; if no, it should not be assessed. /// If not specified, it is no for notes with a [Cue][super::Cue] child element and yes otherwise. @@ -32,7 +32,7 @@ impl Default for AssessAttributes { /// /// By default, an assessment application should assess all notes without a [Cue][super::Cue] child element, /// and not assess any note with a [Cue][super::Cue] child element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Assess { /// Element-specific attributes pub attributes: AssessAttributes, diff --git a/musicxml/src/elements/attributes.rs b/musicxml/src/elements/attributes.rs index 008d895..04a3959 100644 --- a/musicxml/src/elements/attributes.rs +++ b/musicxml/src/elements/attributes.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Attributes] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct AttributesContents { /// The [Footnote] element specifies editorial information or lyrics content. pub footnote: Option, @@ -45,7 +45,7 @@ pub struct AttributesContents { /// /// This includes key and time signatures, clefs, transpositions, and staving. When attributes are changed mid-measure, /// it affects the music in score order, not in MusicXML document order. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Attributes { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/backup.rs b/musicxml/src/elements/backup.rs index b27fad6..f2bf3d1 100644 --- a/musicxml/src/elements/backup.rs +++ b/musicxml/src/elements/backup.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Backup] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct BackupContents { /// The [Duration] element specifies the number of divisions to move back. pub duration: Duration, @@ -20,7 +20,7 @@ pub struct BackupContents { /// /// The [Backup] element is generally used to move between voices and staves. Thus it does not include [Voice][super::Voice] or [Staff][super::Staff] elements. /// Duration values should always be positive, and should not cross measure boundaries or mid-measure changes in the [Divisions][super::Divisions] value. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Backup { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/bar_style.rs b/musicxml/src/elements/bar_style.rs index c09d694..1af90d8 100644 --- a/musicxml/src/elements/bar_style.rs +++ b/musicxml/src/elements/bar_style.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [BarStyle] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BarStyleAttributes { /// Indicates the color of an element. pub color: Option, @@ -13,7 +13,7 @@ pub struct BarStyleAttributes { /// The [BarStyle] element contains barline style and color information. /// /// ![BarStyle](https://hedgetechllc.github.io/musicxml/musicxml/elements/bar-style.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("bar-style")] pub struct BarStyle { /// Element-specific attributes diff --git a/musicxml/src/elements/barline.rs b/musicxml/src/elements/barline.rs index 2710106..629bbd6 100644 --- a/musicxml/src/elements/barline.rs +++ b/musicxml/src/elements/barline.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Barline] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BarlineAttributes { /// Used for playback when there is a [Coda] child element. /// Indicates the end point for a forward jump to a coda sign. @@ -29,7 +29,7 @@ pub struct BarlineAttributes { } /// Contents of the [Barline] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct BarlineContents { /// The [BarStyle] element indicates the style of the barline. pub bar_style: Option, @@ -58,7 +58,7 @@ pub struct BarlineContents { /// This includes information about repeats and multiple endings, as well as line style. Barline data is on the same level as the other musical data /// in a score - a child of a measure in a partwise score, or a part in a timewise score. This allows for barlines within measures, as in dotted barlines /// that subdivide measures in complex meters. The two [Fermata] elements allow for fermatas on both sides of the barline (the lower one inverted). -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Barline { /// Element-specific attributes pub attributes: BarlineAttributes, diff --git a/musicxml/src/elements/barre.rs b/musicxml/src/elements/barre.rs index 6214da6..483ac66 100644 --- a/musicxml/src/elements/barre.rs +++ b/musicxml/src/elements/barre.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Barre] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BarreAttributes { /// The start value indicates the lowest pitched string (e.g., the string with the highest MusicXML number). /// The stop value indicates the highest pitched string. @@ -16,7 +16,7 @@ pub struct BarreAttributes { /// The [Barre] element indicates placing a finger over multiple strings on a single fret. /// /// ![Barre](https://hedgetechllc.github.io/musicxml/musicxml/elements/barre.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Barre { /// Element-specific attributes pub attributes: BarreAttributes, diff --git a/musicxml/src/elements/base_pitch.rs b/musicxml/src/elements/base_pitch.rs index 8326fa0..ca2bf3e 100644 --- a/musicxml/src/elements/base_pitch.rs +++ b/musicxml/src/elements/base_pitch.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The presence of the [BasePitch] element indicates this is the pitch at which the string is played before touching to create the harmonic. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("base-pitch")] pub struct BasePitch { /// Element-specific attributes diff --git a/musicxml/src/elements/bass.rs b/musicxml/src/elements/bass.rs index 2bc999d..67e8e04 100644 --- a/musicxml/src/elements/bass.rs +++ b/musicxml/src/elements/bass.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Bass] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BassAttributes { /// Specifies where the bass is displayed relative to what precedes it. pub arrangement: Option, } /// Contents of the [Bass] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct BassContents { /// The [BassSeparator] element specifies the symbol used to indicate a bass note in popular music chord symbols. pub bass_separator: Option, @@ -26,7 +26,7 @@ pub struct BassContents { /// /// It is generally not used in functional harmony, as inversion is generally not used in pop chord symbols. /// As with [Root][super::Root], it is divided into step and alter elements, similar to pitches. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Bass { /// Element-specific attributes pub attributes: BassAttributes, diff --git a/musicxml/src/elements/bass_alter.rs b/musicxml/src/elements/bass_alter.rs index b0d9dd4..19e9e67 100644 --- a/musicxml/src/elements/bass_alter.rs +++ b/musicxml/src/elements/bass_alter.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [BassAlter] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BassAlterAttributes { /// Indicates the color of an element. pub color: Option, @@ -45,7 +45,7 @@ pub struct BassAlterAttributes { /// /// In some chord styles, the text for the [BassStep][super::BassStep] element may include [BassAlter] information. In that case, the `print_object` attribute /// of the [BassAlter] element can be set to "no". -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("bass-alter")] pub struct BassAlter { /// Element-specific attributes diff --git a/musicxml/src/elements/bass_separator.rs b/musicxml/src/elements/bass_separator.rs index 70d25e6..f8ba48c 100644 --- a/musicxml/src/elements/bass_separator.rs +++ b/musicxml/src/elements/bass_separator.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [BassSeparator] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BassSeparatorAttributes { /// Indicates the color of an element. pub color: Option, @@ -40,7 +40,7 @@ pub struct BassSeparatorAttributes { /// The [BassSeparator] element indicates that text, rather than a line or slash, separates the bass from what precedes it. /// /// ![BassSeparator](https://hedgetechllc.github.io/musicxml/musicxml/elements/bass-separator.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("bass-separator")] pub struct BassSeparator { /// Element-specific attributes diff --git a/musicxml/src/elements/bass_step.rs b/musicxml/src/elements/bass_step.rs index 93a83b7..2083799 100644 --- a/musicxml/src/elements/bass_step.rs +++ b/musicxml/src/elements/bass_step.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [BassStep] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BassStepAttributes { /// Indicates the color of an element. pub color: Option, @@ -40,7 +40,7 @@ pub struct BassStepAttributes { } /// The [BassStep] element represents the pitch step of the bass of the current chord within the [Harmony][super::Harmony] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("bass-step")] pub struct BassStep { /// Element-specific attributes diff --git a/musicxml/src/elements/beam.rs b/musicxml/src/elements/beam.rs index 33cc1c4..8cbd27d 100644 --- a/musicxml/src/elements/beam.rs +++ b/musicxml/src/elements/beam.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Beam] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BeamAttributes { /// Indicates the color of an element. pub color: Option, @@ -29,7 +29,7 @@ pub struct BeamAttributes { /// starting with the eighth note beam using a value of 1: /// /// ![Beam](https://hedgetechllc.github.io/musicxml/musicxml/elements/beam.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Beam { /// Element-specific attributes pub attributes: BeamAttributes, diff --git a/musicxml/src/elements/beat_repeat.rs b/musicxml/src/elements/beat_repeat.rs index 07b891a..188fe2b 100644 --- a/musicxml/src/elements/beat_repeat.rs +++ b/musicxml/src/elements/beat_repeat.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [BeatRepeat] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BeatRepeatAttributes { /// Indicates the starting or stopping point of the section displaying the beat repeat symbols. pub r#type: StartStop, @@ -17,7 +17,7 @@ pub struct BeatRepeatAttributes { } /// Contents of the [BeatRepeat] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct BeatRepeatContents { /// The [SlashType] element is used to indicate the notation style for the slashes. pub slash_type: Option, @@ -36,7 +36,7 @@ pub struct BeatRepeatContents { /// /// The [BeatRepeat] element specifies a notation style for repetitions. The actual music being repeated needs to be repeated within the MusicXML file. /// This element specifies the notation that indicates the repeat. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("beat-repeat")] pub struct BeatRepeat { /// Element-specific attributes diff --git a/musicxml/src/elements/beat_type.rs b/musicxml/src/elements/beat_type.rs index bdf2560..5dfeafa 100644 --- a/musicxml/src/elements/beat_type.rs +++ b/musicxml/src/elements/beat_type.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [BeatType] element indicates the beat unit, as found in the denominator of a time signature. /// /// ![BeatType](https://hedgetechllc.github.io/musicxml/musicxml/elements/beat-type.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("beat-type")] pub struct BeatType { /// Element-specific attributes diff --git a/musicxml/src/elements/beat_unit.rs b/musicxml/src/elements/beat_unit.rs index 4989c40..093cb32 100644 --- a/musicxml/src/elements/beat_unit.rs +++ b/musicxml/src/elements/beat_unit.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [BeatUnit] element indicates the graphical note type to use in a metronome mark. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("beat-unit")] pub struct BeatUnit { /// Element-specific attributes diff --git a/musicxml/src/elements/beat_unit_dot.rs b/musicxml/src/elements/beat_unit_dot.rs index fe044e4..a29f4be 100644 --- a/musicxml/src/elements/beat_unit_dot.rs +++ b/musicxml/src/elements/beat_unit_dot.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [BeatUnitDot] element is used to specify any augmentation dots for a metronome mark note. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("beat-unit-dot")] pub struct BeatUnitDot { /// Element-specific attributes diff --git a/musicxml/src/elements/beat_unit_tied.rs b/musicxml/src/elements/beat_unit_tied.rs index 8ebc2e6..423beb1 100644 --- a/musicxml/src/elements/beat_unit_tied.rs +++ b/musicxml/src/elements/beat_unit_tied.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [BeatUnitTied] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct BeatUnitTiedContents { /// The [BeatUnit] element specifies the beat unit for a metronome mark. pub beat_unit: BeatUnit, @@ -16,7 +16,7 @@ pub struct BeatUnitTiedContents { /// /// This allows two or more tied notes to be associated with a [PerMinute][super::PerMinute] value in a metronome mark, whereas the [MetronomeTied][super::MetronomeTied] element /// is restricted to metric relationship marks. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("beat-unit-tied")] pub struct BeatUnitTied { /// Element-specific attributes diff --git a/musicxml/src/elements/beater.rs b/musicxml/src/elements/beater.rs index 7b9f436..c43a55a 100644 --- a/musicxml/src/elements/beater.rs +++ b/musicxml/src/elements/beater.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Beater] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BeaterAttributes { /// Indicates the direction in which the tip of the beater points. pub tip: Option, @@ -13,7 +13,7 @@ pub struct BeaterAttributes { /// The [Beater] element represents pictograms for beaters, mallets, and sticks that do not have different materials represented in the pictogram. /// /// ![Beater](https://hedgetechllc.github.io/musicxml/musicxml/elements/beater.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Beater { /// Element-specific attributes pub attributes: BeaterAttributes, diff --git a/musicxml/src/elements/bend.rs b/musicxml/src/elements/bend.rs index c42f440..c1bf5e7 100644 --- a/musicxml/src/elements/bend.rs +++ b/musicxml/src/elements/bend.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Bend] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BendAttributes { /// Does the bend accelerate during playback? Default is "no". pub accelerate: Option, @@ -51,7 +51,7 @@ pub struct BendAttributes { } /// Contents of the [Bend] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct BendContents { /// The [BendAlter] element specifies the alteration of the bend. pub bend_alter: BendAlter, @@ -66,7 +66,7 @@ pub struct BendContents { /// The [Bend] element is used in guitar notation and tablature. /// /// A single note with a bend and release will contain two [Bend] elements: the first to represent the bend and the second to represent the release. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Bend { /// Element-specific attributes pub attributes: BendAttributes, diff --git a/musicxml/src/elements/bend_alter.rs b/musicxml/src/elements/bend_alter.rs index ab1837b..c1a5892 100644 --- a/musicxml/src/elements/bend_alter.rs +++ b/musicxml/src/elements/bend_alter.rs @@ -8,7 +8,7 @@ use musicxml_macros::*; /// As with the [Alter][super::Alter] element, numbers like 0.5 can be used to indicate microtones. Negative values indicate pre-bends or releases. /// The [PreBend][super::PreBend] and [Release][super::Release] elements are used to distinguish what is intended. /// Because the [BendAlter] element represents the number of steps in the bend, a release after a bend has a negative [BendAlter] value, not a zero value. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("bend-alter")] pub struct BendAlter { /// Element-specific attributes diff --git a/musicxml/src/elements/bookmark.rs b/musicxml/src/elements/bookmark.rs index 6e0fb91..2c2899d 100644 --- a/musicxml/src/elements/bookmark.rs +++ b/musicxml/src/elements/bookmark.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Bookmark] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BookmarkAttributes { /// The identifier for this bookmark, unique within this document. pub id: Id, @@ -24,7 +24,7 @@ pub struct BookmarkAttributes { } /// The [Bookmark] element serves as a well-defined target for an incoming simple XLink. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Bookmark { /// Element-specific attributes pub attributes: BookmarkAttributes, diff --git a/musicxml/src/elements/bottom_margin.rs b/musicxml/src/elements/bottom_margin.rs index e9c3399..68651ad 100644 --- a/musicxml/src/elements/bottom_margin.rs +++ b/musicxml/src/elements/bottom_margin.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [BottomMargin] element specifies the bottom page margin in tenths. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("bottom-margin")] pub struct BottomMargin { /// Element-specific attributes diff --git a/musicxml/src/elements/bracket.rs b/musicxml/src/elements/bracket.rs index 0227ab0..5f32387 100644 --- a/musicxml/src/elements/bracket.rs +++ b/musicxml/src/elements/bracket.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Bracket] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BracketAttributes { /// Specifies if there is a jog up or down (or both), an arrow, or nothing at the start or end of the bracket. pub line_end: LineEnd, @@ -50,7 +50,7 @@ pub struct BracketAttributes { /// ![Bracket](https://hedgetechllc.github.io/musicxml/musicxml/elements/bracket.png) /// /// The `line_type` is solid if not specified. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Bracket { /// Element-specific attributes pub attributes: BracketAttributes, diff --git a/musicxml/src/elements/brass_bend.rs b/musicxml/src/elements/brass_bend.rs index 1d3a75f..5e82bea 100644 --- a/musicxml/src/elements/brass_bend.rs +++ b/musicxml/src/elements/brass_bend.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [BrassBend] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BrassBendAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct BrassBendAttributes { /// The [BrassBend] element represents the u-shaped bend symbol used in brass notation, distinct from the [Bend][super::Bend] element used in guitar music. /// /// ![BrassBend](https://hedgetechllc.github.io/musicxml/musicxml/elements/brass-bend.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("brass-bend")] pub struct BrassBend { /// Element-specific attributes diff --git a/musicxml/src/elements/breath_mark.rs b/musicxml/src/elements/breath_mark.rs index c587e58..4233097 100644 --- a/musicxml/src/elements/breath_mark.rs +++ b/musicxml/src/elements/breath_mark.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [BreathMark] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct BreathMarkAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct BreathMarkAttributes { /// The [BreathMark] element indicates a place to take a breath. /// /// ![BreathMark](https://hedgetechllc.github.io/musicxml/musicxml/elements/breath-mark.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("breath-mark")] pub struct BreathMark { /// Element-specific attributes diff --git a/musicxml/src/elements/caesura.rs b/musicxml/src/elements/caesura.rs index 4a957dd..320dd09 100644 --- a/musicxml/src/elements/caesura.rs +++ b/musicxml/src/elements/caesura.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Caesura] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct CaesuraAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct CaesuraAttributes { /// The [Caesura] element indicates a slight pause. /// /// It is notated using a "railroad tracks" symbol or other variations specified in the element content. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Caesura { /// Element-specific attributes pub attributes: CaesuraAttributes, diff --git a/musicxml/src/elements/cancel.rs b/musicxml/src/elements/cancel.rs index 8464c5b..ec8b4ef 100644 --- a/musicxml/src/elements/cancel.rs +++ b/musicxml/src/elements/cancel.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Cancel] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct CancelAttributes { /// Indicates where the cancellation appears relative to the new key signature. It is "left" if not specified. pub location: Option, @@ -17,7 +17,7 @@ pub struct CancelAttributes { /// This will always happen when changing to C major or A minor and need not be specified then. /// The [Cancel] element value matches the fifths value of the cancelled key signature /// (e.g., a cancel of -2 will provide an explicit cancellation for changing from B flat major to F major). -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Cancel { /// Element-specific attributes pub attributes: CancelAttributes, diff --git a/musicxml/src/elements/capo.rs b/musicxml/src/elements/capo.rs index 354b340..731a5e6 100644 --- a/musicxml/src/elements/capo.rs +++ b/musicxml/src/elements/capo.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// The [Capo] element indicates at which fret a capo should be placed on a fretted instrument. /// /// This changes the open tuning of the strings specified by the [StaffTuning][super::StaffTuning] element by the specified number of half-steps. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Capo { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/chord.rs b/musicxml/src/elements/chord.rs index d8cb9cf..5d0e5ea 100644 --- a/musicxml/src/elements/chord.rs +++ b/musicxml/src/elements/chord.rs @@ -16,7 +16,7 @@ use musicxml_macros::*; /// ![MozartConcertNo3](https://hedgetechllc.github.io/musicxml/musicxml/elements/chord-multiple-stop.png) /// /// If these first three notes are represented as a chord, the quarter notes must be the ones with the [Chord] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Chord { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/chromatic.rs b/musicxml/src/elements/chromatic.rs index 02edac6..40aaa5d 100644 --- a/musicxml/src/elements/chromatic.rs +++ b/musicxml/src/elements/chromatic.rs @@ -7,7 +7,7 @@ use musicxml_macros::*; /// /// This value does not include [OctaveChange][super::OctaveChange] values; the values for both elements need to be added /// to the written pitch to get the correct sounding pitch. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Chromatic { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/circular_arrow.rs b/musicxml/src/elements/circular_arrow.rs index d64cb7e..303a4fd 100644 --- a/musicxml/src/elements/circular_arrow.rs +++ b/musicxml/src/elements/circular_arrow.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [CircularArrow] element represents a circular arrow, using Unicode arrow terminology to specify the arrow direction. /// /// ![CircularArrow](https://hedgetechllc.github.io/musicxml/musicxml/elements/circular-arrow.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("circular-arrow")] pub struct CircularArrow { /// Element-specific attributes diff --git a/musicxml/src/elements/clef.rs b/musicxml/src/elements/clef.rs index 779d286..5595cea 100644 --- a/musicxml/src/elements/clef.rs +++ b/musicxml/src/elements/clef.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Clef] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ClefAttributes { /// Sometimes clefs are added to the staff in non-standard line positions, either to indicate cue passages, /// or when there are multiple clefs present simultaneously on one staff. In this situation, @@ -57,7 +57,7 @@ pub struct ClefAttributes { } /// Contents of the [Clef] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct ClefContents { /// The [Sign] element represents the clef symbol. pub sign: Sign, @@ -70,7 +70,7 @@ pub struct ClefContents { /// Clefs are represented by a combination of [Sign], [Line], and [ClefOctaveChange] elements. /// /// Clefs appear at the start of each system unless the `print_object` attribute has been set to "no" or the `additional` attribute has been set to "yes". -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Clef { /// Element-specific attributes pub attributes: ClefAttributes, diff --git a/musicxml/src/elements/clef_octave_change.rs b/musicxml/src/elements/clef_octave_change.rs index dab6d47..2b06da3 100644 --- a/musicxml/src/elements/clef_octave_change.rs +++ b/musicxml/src/elements/clef_octave_change.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [ClefOctaveChange] element is used for transposing clefs. /// /// A treble clef for tenors would have a value of -1. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("clef-octave-change")] pub struct ClefOctaveChange { /// Element-specific attributes diff --git a/musicxml/src/elements/coda.rs b/musicxml/src/elements/coda.rs index 86e8823..2811cde 100644 --- a/musicxml/src/elements/coda.rs +++ b/musicxml/src/elements/coda.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Coda] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct CodaAttributes { /// Indicates the color of an element. pub color: Option, @@ -63,7 +63,7 @@ pub struct CodaAttributes { /// A [Sound][super::Sound] element is also needed to guide playback applications reliably. /// /// ![Coda](https://hedgetechllc.github.io/musicxml/musicxml/elements/coda.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Coda { /// Element-specific attributes pub attributes: CodaAttributes, diff --git a/musicxml/src/elements/concert_score.rs b/musicxml/src/elements/concert_score.rs index df83cc2..946bf2b 100644 --- a/musicxml/src/elements/concert_score.rs +++ b/musicxml/src/elements/concert_score.rs @@ -10,7 +10,7 @@ use musicxml_macros::*; /// either the [Diatonic][super::Diatonic] or [Chromatic][super::Chromatic] elements. Concert scores may include octave transpositions, /// so [Transpose][super::Transpose] elements with a [Double][super::Double] element or a non-zero [OctaveChange][super::OctaveChange] /// element value are permitted. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("concert-score")] pub struct ConcertScore { /// Element-specific attributes diff --git a/musicxml/src/elements/creator.rs b/musicxml/src/elements/creator.rs index 7ee8a59..27c2cfd 100644 --- a/musicxml/src/elements/creator.rs +++ b/musicxml/src/elements/creator.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Creator] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct CreatorAttributes { /// Distinguishes different creative contributions. Thus there can be multiple [Creator] elements /// within an [Identification][super::Identification] element. Standard values are composer, lyricist, and arranger. @@ -16,7 +16,7 @@ pub struct CreatorAttributes { /// The [Creator] element describes the creators of the score. /// /// This is similar to the Dublin Core creator element. The MusicXML format does not use the creator / contributor distinction from Dublin Core. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Creator { /// Element-specific attributes pub attributes: CreatorAttributes, diff --git a/musicxml/src/elements/credit.rs b/musicxml/src/elements/credit.rs index 23ad86c..2fff9ec 100644 --- a/musicxml/src/elements/credit.rs +++ b/musicxml/src/elements/credit.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Credit] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct CreditAttributes { /// Specifies an ID that is unique to the entire document. pub id: Option, @@ -17,14 +17,14 @@ pub struct CreditAttributes { } /// Contents of the [CreditImage] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct CreditImageContents { /// The [CreditImage] element specifies the appearance of an image within a credit. pub credit_image: CreditImage, } /// Contents of the [CreditTextSubcontents] element. -#[derive(Debug, Default, PartialEq, Eq)] +#[derive(Debug, Default, PartialEq, Eq, Clone)] pub struct CreditTextSubcontents { /// The [Link] element specifies a hyperlink to a URL. pub link: Vec, @@ -37,7 +37,7 @@ pub struct CreditTextSubcontents { } /// Contents of the [CreditTextContents] element. -#[derive(Debug, Default, PartialEq, Eq)] +#[derive(Debug, Default, PartialEq, Eq, Clone)] pub struct CreditTextContents { /// The [CreditWords] element specifies the text of a credit. pub credit_words: Option, @@ -92,7 +92,7 @@ impl ContentDeserializer for CreditTextContents { /// Contents of the [CreditSubcontents] element. #[allow(clippy::large_enum_variant)] -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum CreditSubcontents { /// The [CreditImageContents] element specifies the appearance of an image within a credit. Image(CreditImageContents), @@ -101,7 +101,7 @@ pub enum CreditSubcontents { } /// Contents of the [Credit] element. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct CreditContents { /// The [CreditType] element specifies the type of text that appears in a credit. pub credit_type: Vec, @@ -202,7 +202,7 @@ impl ContentSerializer for CreditContents { /// /// By default, a series of [CreditWords][super::CreditWords] and [CreditSymbol][super::CreditSymbol] elements within a single [Credit] element follow one another /// in sequence visually. Non-positional formatting attributes are carried over from the previous element by default. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Credit { /// Element-specific attributes pub attributes: CreditAttributes, diff --git a/musicxml/src/elements/credit_image.rs b/musicxml/src/elements/credit_image.rs index 89bcd70..91baaf7 100644 --- a/musicxml/src/elements/credit_image.rs +++ b/musicxml/src/elements/credit_image.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [CreditImage] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct CreditImageAttributes { /// Changes the computation of the default horizontal position. /// The origin is changed relative to the left-hand side of the note or the musical position within the bar. @@ -58,7 +58,7 @@ pub struct CreditImageAttributes { /// /// However, since the [Credit][super::Credit] is not part of a measure, the `default_x` and `default_y` attributes adjust the origin relative /// to the bottom left-hand corner of the page. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("credit-image")] pub struct CreditImage { /// Element-specific attributes diff --git a/musicxml/src/elements/credit_symbol.rs b/musicxml/src/elements/credit_symbol.rs index 4749154..c4558e5 100644 --- a/musicxml/src/elements/credit_symbol.rs +++ b/musicxml/src/elements/credit_symbol.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [CreditSymbol] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct CreditSymbolAttributes { /// Indicates the color of an element. pub color: Option, @@ -91,7 +91,7 @@ pub struct CreditSymbolAttributes { /// /// By default, a series of [CreditWords][super::CreditWords] and [CreditSymbol] elements within a single [Credit][super::Credit] element follow one another /// in sequence visually. Non-positional formatting attributes are carried over from the previous element by default. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("credit-symbol")] pub struct CreditSymbol { /// Element-specific attributes diff --git a/musicxml/src/elements/credit_type.rs b/musicxml/src/elements/credit_type.rs index 21a0545..e18a906 100644 --- a/musicxml/src/elements/credit_type.rs +++ b/musicxml/src/elements/credit_type.rs @@ -16,7 +16,7 @@ use musicxml_macros::*; /// - part name /// /// Other values may also be used. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("credit-type")] pub struct CreditType { /// Element-specific attributes diff --git a/musicxml/src/elements/credit_words.rs b/musicxml/src/elements/credit_words.rs index cac5f88..dfbebfa 100644 --- a/musicxml/src/elements/credit_words.rs +++ b/musicxml/src/elements/credit_words.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [CreditWords] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct CreditWordsAttributes { /// Indicates the color of an element. pub color: Option, @@ -95,7 +95,7 @@ pub struct CreditWordsAttributes { /// /// By default, a series of [CreditWords] and [CreditSymbol][super::CreditSymbol] elements within a single [Credit][super::Credit] element follow one another /// in sequence visually. Non-positional formatting attributes are carried over from the previous element by default. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("credit-words")] pub struct CreditWords { /// Element-specific attributes diff --git a/musicxml/src/elements/cue.rs b/musicxml/src/elements/cue.rs index ab52a55..023579e 100644 --- a/musicxml/src/elements/cue.rs +++ b/musicxml/src/elements/cue.rs @@ -8,7 +8,7 @@ use musicxml_macros::*; /// /// In MusicXML, a cue note is a silent note with no playback. Normal notes that play can be specified as cue size using the [Type][super::Type] element. /// A cue note that is specified as full size using the [Type][super::Type] element will still remain silent. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Cue { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/damp.rs b/musicxml/src/elements/damp.rs index c57aa86..534c7bc 100644 --- a/musicxml/src/elements/damp.rs +++ b/musicxml/src/elements/damp.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Damp] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DampAttributes { /// Indicates the color of an element. pub color: Option, @@ -57,7 +57,7 @@ pub struct DampAttributes { /// The [Damp] element specifies a harp damping mark. /// /// ![Damp](https://hedgetechllc.github.io/musicxml/musicxml/elements/damp.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Damp { /// Element-specific attributes pub attributes: DampAttributes, diff --git a/musicxml/src/elements/damp_all.rs b/musicxml/src/elements/damp_all.rs index b6ef0c6..0f72b8b 100644 --- a/musicxml/src/elements/damp_all.rs +++ b/musicxml/src/elements/damp_all.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [DampAll] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DampAllAttributes { /// Indicates the color of an element. pub color: Option, @@ -57,7 +57,7 @@ pub struct DampAllAttributes { /// The [DampAll] element specifies a harp damping mark for all strings. /// /// ![DampAll](https://hedgetechllc.github.io/musicxml/musicxml/elements/damp-all.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("damp-all")] pub struct DampAll { /// Element-specific attributes diff --git a/musicxml/src/elements/dashes.rs b/musicxml/src/elements/dashes.rs index fbe5b6e..6dcb2bb 100644 --- a/musicxml/src/elements/dashes.rs +++ b/musicxml/src/elements/dashes.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Dashes] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DashesAttributes { /// Indicates if this is the start, stop, or continuation of the dashes. pub r#type: StartStopContinue, @@ -42,7 +42,7 @@ pub struct DashesAttributes { /// The [Dashes] element represents dashes, used for instance with cresc. and dim. marks. /// /// ![Dashes](https://hedgetechllc.github.io/musicxml/musicxml/elements/dashes.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Dashes { /// Element-specific attributes pub attributes: DashesAttributes, diff --git a/musicxml/src/elements/defaults.rs b/musicxml/src/elements/defaults.rs index 63bf96f..35e6502 100644 --- a/musicxml/src/elements/defaults.rs +++ b/musicxml/src/elements/defaults.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Defaults] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct DefaultsContents { /// The [Scaling] element specifies the percentage of the regular scaling to use for music notation. pub scaling: Option, @@ -35,7 +35,7 @@ pub struct DefaultsContents { /// layout, and default values for the music font, word font, lyric font, and lyric language. /// /// Except for the [ConcertScore] element, if any defaults are missing, the choice of what to use is determined by the application. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Defaults { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/degree.rs b/musicxml/src/elements/degree.rs index 85c95f1..0194a2b 100644 --- a/musicxml/src/elements/degree.rs +++ b/musicxml/src/elements/degree.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Degree] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DegreeAttributes { /// Specifies whether or not to print an object. It is yes if not specified. pub print_object: Option, } /// Contents of the [Degree] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct DegreeContents { /// The [DegreeValue] element specifies the degree value for the degree element. pub degree_value: DegreeValue, @@ -29,7 +29,7 @@ pub struct DegreeContents { /// /// A [Harmony][super::Harmony] with a [Kind][super::Kind] value of "other" can be spelled explicitly by using a series of [Degree] elements together with /// a [Root][super::Root], [Numeral][super::Numeral], or [Function][super::Function] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Degree { /// Element-specific attributes pub attributes: DegreeAttributes, diff --git a/musicxml/src/elements/degree_alter.rs b/musicxml/src/elements/degree_alter.rs index 0d5f77c..b929b2f 100644 --- a/musicxml/src/elements/degree_alter.rs +++ b/musicxml/src/elements/degree_alter.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [DegreeAlter] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DegreeAlterAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct DegreeAlterAttributes { /// If the [DegreeType][super::DegreeType] value is alter or subtract, the [DegreeAlter] value is relative to the degree already /// in the chord based on its [Kind][super::Kind] element. If the [DegreeType][super::DegreeType] value is add, the [DegreeAlter] is relative /// to a dominant chord (major and perfect intervals except for a minor seventh). -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("degree-alter")] pub struct DegreeAlter { /// Element-specific attributes diff --git a/musicxml/src/elements/degree_type.rs b/musicxml/src/elements/degree_type.rs index 85561bb..5a97491 100644 --- a/musicxml/src/elements/degree_type.rs +++ b/musicxml/src/elements/degree_type.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [DegreeType] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DegreeTypeAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct DegreeTypeAttributes { /// The [DegreeType] element indicates if this degree is an addition, alteration, or subtraction relative to the [Kind][super::Kind] of the current chord. /// /// The value of the [DegreeType] element affects the interpretation of the value of the [DegreeAlter][super::DegreeAlter] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("degree-type")] pub struct DegreeType { /// Element-specific attributes diff --git a/musicxml/src/elements/degree_value.rs b/musicxml/src/elements/degree_value.rs index 8648fee..5364f9f 100644 --- a/musicxml/src/elements/degree_value.rs +++ b/musicxml/src/elements/degree_value.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [DegreeValue] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DegreeValueAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct DegreeValueAttributes { } /// The content of the [DegreeValue] element is a number indicating the degree of the chord (1 for the root, 3 for third, etc). -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("degree-value")] pub struct DegreeValue { /// Element-specific attributes diff --git a/musicxml/src/elements/delayed_inverted_turn.rs b/musicxml/src/elements/delayed_inverted_turn.rs index f72641f..0cf6b77 100644 --- a/musicxml/src/elements/delayed_inverted_turn.rs +++ b/musicxml/src/elements/delayed_inverted_turn.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [DelayedInvertedTurn] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DelayedInvertedTurnAttributes { /// If yes, the trill accelerates during playback. It is no if not specified. pub accelerate: Option, @@ -63,7 +63,7 @@ pub struct DelayedInvertedTurnAttributes { /// An inverted turn has the shape which goes down and then up. /// /// ![DelayedInvertedTurn](https://hedgetechllc.github.io/musicxml/musicxml/elements/delayed-inverted-turn.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("delayed-inverted-turn")] pub struct DelayedInvertedTurn { /// Element-specific attributes diff --git a/musicxml/src/elements/delayed_turn.rs b/musicxml/src/elements/delayed_turn.rs index 1c90d71..7343061 100644 --- a/musicxml/src/elements/delayed_turn.rs +++ b/musicxml/src/elements/delayed_turn.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [DelayedTurn] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DelayedTurnAttributes { /// If yes, the trill accelerates during playback. It is no if not specified. pub accelerate: Option, @@ -61,7 +61,7 @@ pub struct DelayedTurnAttributes { /// The [DelayedTurn] element indicates a normal turn that is delayed until the end of the current note. /// /// ![DelayedTurn](https://hedgetechllc.github.io/musicxml/musicxml/elements/delayed-turn.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("delayed-turn")] pub struct DelayedTurn { /// Element-specific attributes diff --git a/musicxml/src/elements/detached_legato.rs b/musicxml/src/elements/detached_legato.rs index 2836937..ba9862d 100644 --- a/musicxml/src/elements/detached_legato.rs +++ b/musicxml/src/elements/detached_legato.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [DetachedLegato] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DetachedLegatoAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct DetachedLegatoAttributes { /// The [DetachedLegato] element indicates the combination of a tenuto line and staccato dot symbol. /// /// ![DetachedLegato](https://hedgetechllc.github.io/musicxml/musicxml/elements/detached-legato.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("detached-legato")] pub struct DetachedLegato { /// Element-specific attributes diff --git a/musicxml/src/elements/diatonic.rs b/musicxml/src/elements/diatonic.rs index 3213bf9..3c119a0 100644 --- a/musicxml/src/elements/diatonic.rs +++ b/musicxml/src/elements/diatonic.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// /// This allows for correct spelling of enharmonic transpositions. This value does not include [OctaveChange][super::OctaveChange] values; /// the values for both elements need to be added to the written pitch to get the correct sounding pitch. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Diatonic { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/direction.rs b/musicxml/src/elements/direction.rs index b41ac0b..40346c7 100644 --- a/musicxml/src/elements/direction.rs +++ b/musicxml/src/elements/direction.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Direction] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DirectionAttributes { /// Changes the default_x position of a [Direction]. It indicates that the left-hand side of the direction /// is aligned with the left-hand side of the time signature. If no time signature is present, the direction @@ -21,7 +21,7 @@ pub struct DirectionAttributes { } /// Contents of the [Direction] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct DirectionContents { /// The [DirectionType] element specifies the type of the direction. pub direction_type: Vec, @@ -50,7 +50,7 @@ pub struct DirectionContents { /// By default, a series of [DirectionType] elements and a series of child elements of a [DirectionType] within a single [Direction] element follow one /// another in sequence visually. For a series of [DirectionType] children, non-positional formatting attributes are carried over from the previous /// element by default. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Direction { /// Element-specific attributes pub attributes: DirectionAttributes, diff --git a/musicxml/src/elements/direction_type.rs b/musicxml/src/elements/direction_type.rs index f9532bf..677e7b2 100644 --- a/musicxml/src/elements/direction_type.rs +++ b/musicxml/src/elements/direction_type.rs @@ -9,14 +9,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [DirectionType] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DirectionTypeAttributes { /// Specifies an ID that is unique to the entire document. pub id: Option, } /// The [DirectionTypeContents] element specifies all possible options available for use in a [DirectionType] element. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum DirectionTypeContents { /// The [Rehearsal] element indicates a rehearsal mark. Rehearsal(Vec), @@ -251,7 +251,7 @@ impl ContentSerializer for DirectionTypeContents { /// /// The [Dynamics] element may also be used in the [Notations][super::Notations] element. Child element attributes related to print suggestions apply /// to the individual [DirectionType], not to the overall [Direction][super::Direction]. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("direction-type")] pub struct DirectionType { /// Element-specific attributes diff --git a/musicxml/src/elements/directive.rs b/musicxml/src/elements/directive.rs index abfc929..b5a9656 100644 --- a/musicxml/src/elements/directive.rs +++ b/musicxml/src/elements/directive.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Directive] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DirectiveAttributes { /// Indicates the color of an element. pub color: Option, @@ -43,7 +43,7 @@ pub struct DirectiveAttributes { /// /// This is typically used for tempo markings at the beginning of a piece of music. This element was deprecated in Version 2.0 in favor of the /// [Direction][super::Direction] element's `directive` attribute. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Directive { /// Element-specific attributes pub attributes: DirectiveAttributes, diff --git a/musicxml/src/elements/display_octave.rs b/musicxml/src/elements/display_octave.rs index 9c1a311..ee940a1 100644 --- a/musicxml/src/elements/display_octave.rs +++ b/musicxml/src/elements/display_octave.rs @@ -8,7 +8,7 @@ use musicxml_macros::*; /// /// Positioning follows the current clef. If percussion clef is used, the [DisplayStep][super::DisplayStep] and [DisplayOctave] elements are interpreted /// as if in treble clef, with a G in octave 4 on line 2. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("display-octave")] pub struct DisplayOctave { /// Element-specific attributes diff --git a/musicxml/src/elements/display_step.rs b/musicxml/src/elements/display_step.rs index 616e6b3..ca8a33a 100644 --- a/musicxml/src/elements/display_step.rs +++ b/musicxml/src/elements/display_step.rs @@ -8,7 +8,7 @@ use musicxml_macros::*; /// /// Positioning follows the current clef. If percussion clef is used, the [DisplayStep] and [DisplayOctave][super::DisplayOctave] elements are interpreted /// as if in treble clef, with a G in octave 4 on line 2. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("display-step")] pub struct DisplayStep { /// Element-specific attributes diff --git a/musicxml/src/elements/display_text.rs b/musicxml/src/elements/display_text.rs index 38f58d9..76ea955 100644 --- a/musicxml/src/elements/display_text.rs +++ b/musicxml/src/elements/display_text.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [DisplayText] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DisplayTextAttributes { /// Indicates the color of an element. pub color: Option, @@ -89,7 +89,7 @@ pub struct DisplayTextAttributes { /// The [DisplayText] element is used for exact formatting of multi-font text in display elements such as [PartNameDisplay][super::PartNameDisplay]. /// /// The `enclosure` attribute is none if not specified. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("display-text")] pub struct DisplayText { /// Element-specific attributes diff --git a/musicxml/src/elements/distance.rs b/musicxml/src/elements/distance.rs index cc4b377..316ee66 100644 --- a/musicxml/src/elements/distance.rs +++ b/musicxml/src/elements/distance.rs @@ -4,14 +4,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Distance] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DistanceAttributes { /// The type of distance being defined. pub r#type: DistanceType, } /// The [Distance] element represents standard distances between notation elements in tenths. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Distance { /// Element-specific attributes pub attributes: DistanceAttributes, diff --git a/musicxml/src/elements/divisions.rs b/musicxml/src/elements/divisions.rs index de7e149..adb559b 100644 --- a/musicxml/src/elements/divisions.rs +++ b/musicxml/src/elements/divisions.rs @@ -10,7 +10,7 @@ use musicxml_macros::*; /// /// Using a [Divisions] element lets us use just one number to represent a duration for each note in the score, while retaining the full power of a /// fractional representation. If maximum compatibility with Standard MIDI 1.0 files is important, do not have the [Divisions] value exceed 16383. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Divisions { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/doit.rs b/musicxml/src/elements/doit.rs index b5af7b2..fdfb79f 100644 --- a/musicxml/src/elements/doit.rs +++ b/musicxml/src/elements/doit.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Doit] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DoitAttributes { /// Indicates the color of an element. pub color: Option, @@ -56,7 +56,7 @@ pub struct DoitAttributes { /// The doit appears after the main note and goes above the main pitch. /// /// ![Doit](https://hedgetechllc.github.io/musicxml/musicxml/elements/doit.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Doit { /// Element-specific attributes pub attributes: DoitAttributes, diff --git a/musicxml/src/elements/dot.rs b/musicxml/src/elements/dot.rs index 814b36e..84a4f96 100644 --- a/musicxml/src/elements/dot.rs +++ b/musicxml/src/elements/dot.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Dot] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DotAttributes { /// Indicates the color of an element. pub color: Option, @@ -40,7 +40,7 @@ pub struct DotAttributes { } /// One [Dot] element is used for each dot of prolongation. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Dot { /// Element-specific attributes pub attributes: DotAttributes, diff --git a/musicxml/src/elements/double.rs b/musicxml/src/elements/double.rs index 6b1edce..10e51f3 100644 --- a/musicxml/src/elements/double.rs +++ b/musicxml/src/elements/double.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Double] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DoubleAttributes { /// If the `above` attribute is set to yes, the doubling is one octave above what is written, /// as for mixed flute / piccolo parts in band literature. Otherwise the doubling is one octave @@ -13,7 +13,7 @@ pub struct DoubleAttributes { } /// If the [Double] element is present, it indicates that the music is doubled one octave from what is currently written. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Double { /// Element-specific attributes pub attributes: DoubleAttributes, diff --git a/musicxml/src/elements/double_tongue.rs b/musicxml/src/elements/double_tongue.rs index c93d4a8..ff6dc1b 100644 --- a/musicxml/src/elements/double_tongue.rs +++ b/musicxml/src/elements/double_tongue.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [DoubleTongue] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DoubleTongueAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct DoubleTongueAttributes { /// The [DoubleTongue] element represents the double tongue symbol (two dots arranged horizontally). /// /// ![DoubleTongue](https://hedgetechllc.github.io/musicxml/musicxml/elements/double-tongue.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("double-tongue")] pub struct DoubleTongue { /// Element-specific attributes diff --git a/musicxml/src/elements/down_bow.rs b/musicxml/src/elements/down_bow.rs index 8375475..f952ea5 100644 --- a/musicxml/src/elements/down_bow.rs +++ b/musicxml/src/elements/down_bow.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [DownBow] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DownBowAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct DownBowAttributes { /// The [DownBow] element represents the symbol that is used both for down-bowing on bowed instruments, and down-stroke on plucked instruments. /// /// ![DownBow][down-bow.png] -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("down-bow")] pub struct DownBow { /// Element-specific attributes diff --git a/musicxml/src/elements/duration.rs b/musicxml/src/elements/duration.rs index b718c3c..e3706c9 100644 --- a/musicxml/src/elements/duration.rs +++ b/musicxml/src/elements/duration.rs @@ -9,7 +9,7 @@ use musicxml_macros::*; /// /// The [Duration] element moves the musical position when used in [Backup][super::Backup] elements, [Forward][super::Forward] elements, and /// [Note][super::Note] elements that do not contain a [Chord][super::Chord] child element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Duration { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/dynamics.rs b/musicxml/src/elements/dynamics.rs index 7873d63..3dcdd17 100644 --- a/musicxml/src/elements/dynamics.rs +++ b/musicxml/src/elements/dynamics.rs @@ -11,7 +11,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Dynamics] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct DynamicsAttributes { /// Indicates the color of an element. pub color: Option, @@ -72,7 +72,7 @@ pub struct DynamicsAttributes { } /// The [DynamicsType] element specifies all possible dynamics available for use in a [Dynamics] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub enum DynamicsType { /// The [P] element represents the piano dynamic. P(P), @@ -146,7 +146,7 @@ pub enum DynamicsType { /// /// The `placement` attribute is used when the dynamics are associated with a [Note][super::Note]. It is ignored when the dynamics are associated with /// a [Direction][super::Direction]. In that case the [Direction][super::Direction] element's `placement` attribute is used instead. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Dynamics { /// Element-specific attributes pub attributes: DynamicsAttributes, diff --git a/musicxml/src/elements/effect.rs b/musicxml/src/elements/effect.rs index d0fa2f6..38e115c 100644 --- a/musicxml/src/elements/effect.rs +++ b/musicxml/src/elements/effect.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Effect] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct EffectAttributes { /// Distinguishes different SMuFL stylistic alternates. pub smufl: Option, @@ -13,7 +13,7 @@ pub struct EffectAttributes { /// The [Effect] element represents pictograms for sound effect percussion instruments. /// /// ![Effect](https://hedgetechllc.github.io/musicxml/musicxml/elements/effect.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Effect { /// Element-specific attributes pub attributes: EffectAttributes, diff --git a/musicxml/src/elements/elevation.rs b/musicxml/src/elements/elevation.rs index 1be7426..073f21b 100644 --- a/musicxml/src/elements/elevation.rs +++ b/musicxml/src/elements/elevation.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// The [Elevation] and [Pan][super::Pan] elements allow placing of sound in a 3-D space relative to the listener. /// /// Both are expressed in degrees ranging from -180 to 180. For [Elevation], 0 is level with the listener, 90 is directly above, and -90 is directly below. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Elevation { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/elision.rs b/musicxml/src/elements/elision.rs index b17c2a3..9c2df5c 100644 --- a/musicxml/src/elements/elision.rs +++ b/musicxml/src/elements/elision.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Elision] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ElisionAttributes { /// Indicates the color of an element. pub color: Option, @@ -25,7 +25,7 @@ pub struct ElisionAttributes { /// The text content specifies the symbol used to display the elision. Common values are a no-break space (Unicode 00A0), an underscore (Unicode 005F), /// or an undertie (Unicode 203F). If the text content is empty, the `smufl` attribute is used to specify the symbol to use. /// If neither text content nor a `smufl` attribute are present, the elision glyph is application-specific. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Elision { /// Element-specific attributes pub attributes: ElisionAttributes, diff --git a/musicxml/src/elements/encoder.rs b/musicxml/src/elements/encoder.rs index 4f0e711..c447195 100644 --- a/musicxml/src/elements/encoder.rs +++ b/musicxml/src/elements/encoder.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Encoder] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct EncoderAttributes { /// Standard values are music, words, and arrangement, but other types may be used. /// This attribute is only needed when there are multiple [Encoder] elements. @@ -12,7 +12,7 @@ pub struct EncoderAttributes { } /// The [Encoder] element contains information about who did the digital encoding. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Encoder { /// Element-specific attributes pub attributes: EncoderAttributes, diff --git a/musicxml/src/elements/encoding.rs b/musicxml/src/elements/encoding.rs index d7a4217..9062671 100644 --- a/musicxml/src/elements/encoding.rs +++ b/musicxml/src/elements/encoding.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [EncodingContents] element specifies all possible options available for use in an [Encoding] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub enum EncodingContents { /// The [EncodingDate] element specifies the date of the encoding. #[rename("encoding-date")] @@ -21,7 +21,7 @@ pub enum EncodingContents { } /// The [Encoding] element contains information about who did the digital encoding, when, with what software, and in what aspects. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Encoding { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/encoding_date.rs b/musicxml/src/elements/encoding_date.rs index 4e31d51..2fb4773 100644 --- a/musicxml/src/elements/encoding_date.rs +++ b/musicxml/src/elements/encoding_date.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [EncodingDate] element specifies the date of the digital encoding. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("encoding-date")] pub struct EncodingDate { /// Element-specific attributes diff --git a/musicxml/src/elements/encoding_description.rs b/musicxml/src/elements/encoding_description.rs index ec1fa3e..82c008a 100644 --- a/musicxml/src/elements/encoding_description.rs +++ b/musicxml/src/elements/encoding_description.rs @@ -4,7 +4,7 @@ use musicxml_macros::*; /// The [EncodingDescription] element contains descriptive information about the digital encoding /// that is not provided in the other [Encoding][super::Encoding] child elements. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("encoding-description")] pub struct EncodingDescription { /// Element-specific attributes diff --git a/musicxml/src/elements/end_line.rs b/musicxml/src/elements/end_line.rs index 540f46e..ff9742f 100644 --- a/musicxml/src/elements/end_line.rs +++ b/musicxml/src/elements/end_line.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [EndLine] element comes from RP-017 for Standard MIDI File Lyric meta-events. /// /// It facilitates lyric display for Karaoke and similar applications. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("end-line")] pub struct EndLine { /// Element-specific attributes diff --git a/musicxml/src/elements/end_paragraph.rs b/musicxml/src/elements/end_paragraph.rs index 1f4b0c1..b62fb01 100644 --- a/musicxml/src/elements/end_paragraph.rs +++ b/musicxml/src/elements/end_paragraph.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [EndParagraph] element comes from RP-017 for Standard MIDI File Lyric meta-events. /// /// It facilitates lyric display for Karaoke and similar applications. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("end-paragraph")] pub struct EndParagraph { /// Element-specific attributes diff --git a/musicxml/src/elements/ending.rs b/musicxml/src/elements/ending.rs index 9a4fdc5..26050bd 100644 --- a/musicxml/src/elements/ending.rs +++ b/musicxml/src/elements/ending.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Ending] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct EndingAttributes { /// Indicates which times the ending is played, similar to the `time_only` attribute used by other elements. /// While this often represents the numeric values for what is under the ending line, it can also indicate whether @@ -64,7 +64,7 @@ pub struct EndingAttributes { /// ![Ending](https://hedgetechllc.github.io/musicxml/musicxml/elements/ending.png) /// /// The element text is used when the text displayed in the ending is different than what appears in the number attribute. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Ending { /// Element-specific attributes pub attributes: EndingAttributes, diff --git a/musicxml/src/elements/ensemble.rs b/musicxml/src/elements/ensemble.rs index 0e469ff..5a5dd2a 100644 --- a/musicxml/src/elements/ensemble.rs +++ b/musicxml/src/elements/ensemble.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// The [Ensemble] element is present if performance is intended by an ensemble such as an orchestral section. /// /// The text of the [Ensemble] element contains the size of the section, or is empty if the ensemble size is not specified. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Ensemble { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/except_voice.rs b/musicxml/src/elements/except_voice.rs index dfab135..21cd2f1 100644 --- a/musicxml/src/elements/except_voice.rs +++ b/musicxml/src/elements/except_voice.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// /// Any [Note][super::Note] elements that are in voices specified by the [ExceptVoice] elements are displayed in normal notation, /// in addition to the slash notation that is always displayed. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("except-voice")] pub struct ExceptVoice { /// Element-specific attributes diff --git a/musicxml/src/elements/extend.rs b/musicxml/src/elements/extend.rs index 60ed044..7425a1d 100644 --- a/musicxml/src/elements/extend.rs +++ b/musicxml/src/elements/extend.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Extend] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ExtendAttributes { /// Indicates the color of an element. pub color: Option, @@ -33,7 +33,7 @@ pub struct ExtendAttributes { } /// The [Extend] element represents lyric word extension / melisma lines as well as figured bass extensions. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Extend { /// Element-specific attributes pub attributes: ExtendAttributes, diff --git a/musicxml/src/elements/eyeglasses.rs b/musicxml/src/elements/eyeglasses.rs index 2b2b21f..1d522a7 100644 --- a/musicxml/src/elements/eyeglasses.rs +++ b/musicxml/src/elements/eyeglasses.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Eyeglasses] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct EyeglassesAttributes { /// Indicates the color of an element. pub color: Option, @@ -57,7 +57,7 @@ pub struct EyeglassesAttributes { /// The [Eyeglasses] element represents the eyeglasses symbol, common in commercial music. /// /// ![Eyeglasses](https://hedgetechllc.github.io/musicxml/musicxml/elements/eyeglasses.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Eyeglasses { /// Element-specific attributes pub attributes: EyeglassesAttributes, diff --git a/musicxml/src/elements/f.rs b/musicxml/src/elements/f.rs index 1393879..dc32a09 100644 --- a/musicxml/src/elements/f.rs +++ b/musicxml/src/elements/f.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [F] element represents a forte dynamic marking. /// /// ![f](https://hedgetechllc.github.io/musicxml/musicxml/elements/f.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct F { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/falloff.rs b/musicxml/src/elements/falloff.rs index b75f36a..ef0bdbb 100644 --- a/musicxml/src/elements/falloff.rs +++ b/musicxml/src/elements/falloff.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Falloff] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FalloffAttributes { /// Indicates the color of an element. pub color: Option, @@ -56,7 +56,7 @@ pub struct FalloffAttributes { /// The falloff appears after the main note and goes below the main pitch. /// /// ![Falloff](https://hedgetechllc.github.io/musicxml/musicxml/elements/falloff.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Falloff { /// Element-specific attributes pub attributes: FalloffAttributes, diff --git a/musicxml/src/elements/feature.rs b/musicxml/src/elements/feature.rs index 0d9dc15..890c979 100644 --- a/musicxml/src/elements/feature.rs +++ b/musicxml/src/elements/feature.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Feature] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FeatureAttributes { /// Represents the type of the feature. This type is flexible to allow for different analyses. pub r#type: Option, @@ -13,7 +13,7 @@ pub struct FeatureAttributes { /// The [Feature] element is a part of the [Grouping][super::Grouping] element used for musical analysis. /// /// The `type` attribute represents the type of the feature and the element content represents its value. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Feature { /// Element-specific attributes pub attributes: FeatureAttributes, diff --git a/musicxml/src/elements/fermata.rs b/musicxml/src/elements/fermata.rs index d133263..8bcb6e3 100644 --- a/musicxml/src/elements/fermata.rs +++ b/musicxml/src/elements/fermata.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Fermata] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FermataAttributes { /// Indicates the color of an element. pub color: Option, @@ -46,7 +46,7 @@ pub struct FermataAttributes { /// An empty [Fermata] element represents a normal fermata. /// /// ![Fermata](https://hedgetechllc.github.io/musicxml/musicxml/elements/fermata.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Fermata { /// Element-specific attributes pub attributes: FermataAttributes, diff --git a/musicxml/src/elements/ff.rs b/musicxml/src/elements/ff.rs index a78b4b8..63eca40 100644 --- a/musicxml/src/elements/ff.rs +++ b/musicxml/src/elements/ff.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Ff] element represents a fortissimo dynamic marking. /// /// ![ff](https://hedgetechllc.github.io/musicxml/musicxml/elements/ff.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Ff { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/fff.rs b/musicxml/src/elements/fff.rs index 85bb2a9..5571ebf 100644 --- a/musicxml/src/elements/fff.rs +++ b/musicxml/src/elements/fff.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Fff] element represents a triple forte dynamic marking. /// /// ![fff](https://hedgetechllc.github.io/musicxml/musicxml/elements/fff.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Fff { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/ffff.rs b/musicxml/src/elements/ffff.rs index 6173d3f..6191a49 100644 --- a/musicxml/src/elements/ffff.rs +++ b/musicxml/src/elements/ffff.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Ffff] element represents an ffff dynamic marking. /// /// ![ffff](https://hedgetechllc.github.io/musicxml/musicxml/elements/ffff.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Ffff { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/fffff.rs b/musicxml/src/elements/fffff.rs index 007624b..d27f37f 100644 --- a/musicxml/src/elements/fffff.rs +++ b/musicxml/src/elements/fffff.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Fffff] element represents an fffff dynamic marking. /// /// ![fffff](https://hedgetechllc.github.io/musicxml/musicxml/elements/fffff.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Fffff { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/ffffff.rs b/musicxml/src/elements/ffffff.rs index d86c34e..b8d2674 100644 --- a/musicxml/src/elements/ffffff.rs +++ b/musicxml/src/elements/ffffff.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Ffffff] element represents an ffffff dynamic marking. /// /// ![ffffff](https://hedgetechllc.github.io/musicxml/musicxml/elements/ffffff.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Ffffff { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/fifths.rs b/musicxml/src/elements/fifths.rs index 5801c23..b689102 100644 --- a/musicxml/src/elements/fifths.rs +++ b/musicxml/src/elements/fifths.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Fifths] element represents the number of flats or sharps in a traditional key signature. /// /// Negative numbers are used for flats and positive numbers for sharps, reflecting the key's placement within the circle of fifths (hence the element name). -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Fifths { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/figure.rs b/musicxml/src/elements/figure.rs index 05d8085..0e1a13f 100644 --- a/musicxml/src/elements/figure.rs +++ b/musicxml/src/elements/figure.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Figure] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct FigureContents { /// The [Prefix] element is used to specify the prefix of a figured bass symbol. pub prefix: Option, @@ -21,7 +21,7 @@ pub struct FigureContents { } /// The [Figure] element represents a single figure within a [FiguredBass][super::FiguredBass] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Figure { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/figure_number.rs b/musicxml/src/elements/figure_number.rs index 47f94ca..8e9aea9 100644 --- a/musicxml/src/elements/figure_number.rs +++ b/musicxml/src/elements/figure_number.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [FigureNumber] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FigureNumberAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct FigureNumberAttributes { /// ![FigureNumber](https://hedgetechllc.github.io/musicxml/musicxml/elements/figure-number.png) /// /// Overstrikes of the figure number are represented in the [Suffix][super::Suffix] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("figure-number")] pub struct FigureNumber { /// Element-specific attributes diff --git a/musicxml/src/elements/figured_bass.rs b/musicxml/src/elements/figured_bass.rs index 1b572f6..e1a79b6 100644 --- a/musicxml/src/elements/figured_bass.rs +++ b/musicxml/src/elements/figured_bass.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [FiguredBass] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FiguredBassAttributes { /// Indicates the color of an element. pub color: Option, @@ -75,7 +75,7 @@ pub struct FiguredBassAttributes { } /// Contents of the [FiguredBass] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct FiguredBassContents { /// The [Figure] element represents a single figured bass figure. pub figure: Vec
, @@ -91,7 +91,7 @@ pub struct FiguredBassContents { /// /// A [FiguredBass] element takes its position from the first regular note (not a grace note or chord note) that follows in score order. /// The optional [Duration] element is used to indicate changes of figures under a note. Figures are ordered from top to bottom. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("figured-bass")] pub struct FiguredBass { /// Element-specific attributes diff --git a/musicxml/src/elements/fingering.rs b/musicxml/src/elements/fingering.rs index d5ef802..8f1974b 100644 --- a/musicxml/src/elements/fingering.rs +++ b/musicxml/src/elements/fingering.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Fingering] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FingeringAttributes { /// Indicates that this is an alternate fingering. It is no if not present. pub alternate: Option, @@ -47,7 +47,7 @@ pub struct FingeringAttributes { /// /// Multiple fingerings may be given, typically to substitute fingerings in the middle of a note. For guitar and other fretted instruments, /// the [Fingering] element represents the fretting finger; the [Pluck][super::Pluck] element represents the plucking finger. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Fingering { /// Element-specific attributes pub attributes: FingeringAttributes, diff --git a/musicxml/src/elements/fingernails.rs b/musicxml/src/elements/fingernails.rs index ea15031..c06410a 100644 --- a/musicxml/src/elements/fingernails.rs +++ b/musicxml/src/elements/fingernails.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Fingernails] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FingernailsAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct FingernailsAttributes { /// The [Fingernails] element is used in notation for harp and other plucked string instruments. /// /// ![Fingernails](https://hedgetechllc.github.io/musicxml/musicxml/elements/fingernails.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Fingernails { /// Element-specific attributes pub attributes: FingernailsAttributes, diff --git a/musicxml/src/elements/first.rs b/musicxml/src/elements/first.rs index ba3d233..790052c 100644 --- a/musicxml/src/elements/first.rs +++ b/musicxml/src/elements/first.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [First] element is the part of the swing ratio that refers to the first of two consecutive notes. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct First { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/first_fret.rs b/musicxml/src/elements/first_fret.rs index 3949b79..f0a7d43 100644 --- a/musicxml/src/elements/first_fret.rs +++ b/musicxml/src/elements/first_fret.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [FirstFret] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FirstFretAttributes { /// Indicates whether the text appears to the left or right of the frame. pub location: Option, @@ -15,7 +15,7 @@ pub struct FirstFretAttributes { /// The [FirstFret] element indicates which fret is shown in the top space of the frame. /// /// It is fret 1 if the element is not present. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("first-fret")] pub struct FirstFret { /// Element-specific attributes diff --git a/musicxml/src/elements/flip.rs b/musicxml/src/elements/flip.rs index 10b0161..11f65f8 100644 --- a/musicxml/src/elements/flip.rs +++ b/musicxml/src/elements/flip.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Flip] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FlipAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct FlipAttributes { /// The [Flip] element represents the flip symbol used in brass notation. /// /// ![Flip](https://hedgetechllc.github.io/musicxml/musicxml/elements/flip.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Flip { /// Element-specific attributes pub attributes: FlipAttributes, diff --git a/musicxml/src/elements/footnote.rs b/musicxml/src/elements/footnote.rs index 8cf8d0a..fa2fc84 100644 --- a/musicxml/src/elements/footnote.rs +++ b/musicxml/src/elements/footnote.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Footnote] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FootnoteAttributes { /// Indicates the color of an element. pub color: Option, @@ -87,7 +87,7 @@ pub struct FootnoteAttributes { } /// The [Footnote] element specifies editorial information that appears in footnotes in the printed score. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Footnote { /// Element-specific attributes pub attributes: FootnoteAttributes, diff --git a/musicxml/src/elements/for_part.rs b/musicxml/src/elements/for_part.rs index bca4417..54df465 100644 --- a/musicxml/src/elements/for_part.rs +++ b/musicxml/src/elements/for_part.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [ForPart] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ForPartAttributes { /// Specifies an ID that is unique to the entire document. pub id: Option, @@ -16,7 +16,7 @@ pub struct ForPartAttributes { } /// Contents of the [ForPart] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct ForPartContents { /// The [PartClef] element is used to specify the clef used in a part. pub part_clef: Option, @@ -28,7 +28,7 @@ pub struct ForPartContents { /// /// It is only used in score files that contain a [ConcertScore][super::ConcertScore] element in the [Defaults][super::Defaults] element. /// This allows concert scores with transposed parts to be represented in a single uncompressed MusicXML file. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("for-part")] pub struct ForPart { /// Element-specific attributes diff --git a/musicxml/src/elements/forward.rs b/musicxml/src/elements/forward.rs index d7819ff..857aa4c 100644 --- a/musicxml/src/elements/forward.rs +++ b/musicxml/src/elements/forward.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Forward] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct ForwardContents { /// The [Duration] element specifies the duration of the forward element. pub duration: Duration, @@ -23,7 +23,7 @@ pub struct ForwardContents { /// /// The [Forward] element is generally used within voices and staves. [Duration] values should always be positive, and should not cross /// measure boundaries or mid-measure changes in the [Divisions][super::Divisions] value. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Forward { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/fp.rs b/musicxml/src/elements/fp.rs index a27230b..00ace5b 100644 --- a/musicxml/src/elements/fp.rs +++ b/musicxml/src/elements/fp.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Fp] element represents a forte piano dynamic marking. /// /// ![fp](https://hedgetechllc.github.io/musicxml/musicxml/elements/fp.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Fp { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/frame.rs b/musicxml/src/elements/frame.rs index 952b011..ba3eedf 100644 --- a/musicxml/src/elements/frame.rs +++ b/musicxml/src/elements/frame.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Frame] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FrameAttributes { /// Indicates the color of an element. pub color: Option, @@ -56,7 +56,7 @@ pub struct FrameAttributes { } /// Contents of the [Frame] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct FrameContents { /// The [FrameStrings] element specifies the number of strings on the frame. pub frame_strings: FrameStrings, @@ -73,7 +73,7 @@ pub struct FrameContents { /// The representation is based on the NIFF guitar grid with additional information. The frame type's `unplayed` attribute indicates /// what to display above a string that has no associated [FrameNote] element. Typical values are "x" and the empty string. If the attribute /// is not present, the display of the unplayed string is application-defined. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Frame { /// Element-specific attributes pub attributes: FrameAttributes, diff --git a/musicxml/src/elements/frame_frets.rs b/musicxml/src/elements/frame_frets.rs index 1c7c2de..b4d30dc 100644 --- a/musicxml/src/elements/frame_frets.rs +++ b/musicxml/src/elements/frame_frets.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [FrameFrets] element gives the overall size of the frame in horizontal spaces (frets). -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("frame-frets")] pub struct FrameFrets { /// Element-specific attributes diff --git a/musicxml/src/elements/frame_note.rs b/musicxml/src/elements/frame_note.rs index 8d2b216..c87b2e1 100644 --- a/musicxml/src/elements/frame_note.rs +++ b/musicxml/src/elements/frame_note.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [FrameNote] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct FrameNoteContents { /// The [StringNumber] element specifies the string number of the note. pub string: StringNumber, @@ -19,7 +19,7 @@ pub struct FrameNoteContents { /// The [FrameNote] type represents each note included in the frame. /// /// An open string will have a fret value of 0, while a muted string will not be associated with a [FrameNote] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("frame-note")] pub struct FrameNote { /// Element-specific attributes diff --git a/musicxml/src/elements/frame_strings.rs b/musicxml/src/elements/frame_strings.rs index 0e78b72..e2e97bc 100644 --- a/musicxml/src/elements/frame_strings.rs +++ b/musicxml/src/elements/frame_strings.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [FrameStrings] element gives the overall size of the frame in vertical lines (strings). -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("frame-strings")] pub struct FrameStrings { /// Element-specific attributes diff --git a/musicxml/src/elements/fret.rs b/musicxml/src/elements/fret.rs index 3206c42..22ff315 100644 --- a/musicxml/src/elements/fret.rs +++ b/musicxml/src/elements/fret.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Fret] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FretAttributes { /// Indicates the color of an element. pub color: Option, @@ -21,7 +21,7 @@ pub struct FretAttributes { /// The [Fret] element is used with tablature notation and chord diagrams. /// /// Fret numbers start with 0 for an open string and 1 for the first fret. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Fret { /// Element-specific attributes pub attributes: FretAttributes, diff --git a/musicxml/src/elements/function.rs b/musicxml/src/elements/function.rs index 57bb9f9..48bb12c 100644 --- a/musicxml/src/elements/function.rs +++ b/musicxml/src/elements/function.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Function] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct FunctionAttributes { /// Indicates the color of an element. pub color: Option, @@ -41,7 +41,7 @@ pub struct FunctionAttributes { /// /// It represents the Roman numeral part of a functional harmony rather than the complete function itself. It has been deprecated /// as of MusicXML 4.0 in favor of the [Numeral][super::Numeral] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Function { /// Element-specific attributes pub attributes: FunctionAttributes, diff --git a/musicxml/src/elements/fz.rs b/musicxml/src/elements/fz.rs index 29dd3c6..fa63aee 100644 --- a/musicxml/src/elements/fz.rs +++ b/musicxml/src/elements/fz.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Fz] element represents a forzando fz dynamic marking. /// /// ![fz](https://hedgetechllc.github.io/musicxml/musicxml/elements/fz.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Fz { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/glass.rs b/musicxml/src/elements/glass.rs index d0d7f8f..f72e6e0 100644 --- a/musicxml/src/elements/glass.rs +++ b/musicxml/src/elements/glass.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Glass] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct GlassAttributes { /// Distinguishes different SMuFL glyphs for wind chimes in the Chimes pictograms range, including those made of materials other than glass. pub smufl: Option, @@ -13,7 +13,7 @@ pub struct GlassAttributes { /// The [Glass] element represents pictograms for glass percussion instruments. /// /// ![Glass](https://hedgetechllc.github.io/musicxml/musicxml/elements/glass.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Glass { /// Element-specific attributes pub attributes: GlassAttributes, diff --git a/musicxml/src/elements/glissando.rs b/musicxml/src/elements/glissando.rs index f15fa30..3d3c161 100644 --- a/musicxml/src/elements/glissando.rs +++ b/musicxml/src/elements/glissando.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Glissando] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct GlissandoAttributes { /// Indicates if this is the start or stop of the glissando. pub r#type: StartStop, @@ -54,7 +54,7 @@ pub struct GlissandoAttributes { /// The [Glissando] and [Slide][super::Slide] elements both indicate rapidly moving from one pitch to the other so that individual notes are not discerned. /// /// A [Glissando] sounds the distinct notes in between the two pitches and defaults to a wavy line. The optional text is printed alongside the line. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Glissando { /// Element-specific attributes pub attributes: GlissandoAttributes, diff --git a/musicxml/src/elements/glyph.rs b/musicxml/src/elements/glyph.rs index 8e9343a..c133ddb 100644 --- a/musicxml/src/elements/glyph.rs +++ b/musicxml/src/elements/glyph.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Glyph] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct GlyphAttributes { /// The type of glyph that is being defined. pub r#type: GlyphType, @@ -18,7 +18,7 @@ pub struct GlyphAttributes { /// The SMuFL canonical glyph name should match the type. For instance, a type of quarter-rest would use values "restQuarter," "restQuarterOld," or /// "restQuarterZ". A type of g-clef-ottava-bassa would use values "gClef8vb," "gClef8vbOld," or "gClef8vbCClef". A type of octave-shift-up-8 would use values /// "ottava," "ottavaBassa," "ottavaBassaBa," "ottavaBassaVb," or "octaveBassa". -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Glyph { /// Element-specific attributes pub attributes: GlyphAttributes, diff --git a/musicxml/src/elements/golpe.rs b/musicxml/src/elements/golpe.rs index 2bfd1b0..bd8380e 100644 --- a/musicxml/src/elements/golpe.rs +++ b/musicxml/src/elements/golpe.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Golpe] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct GolpeAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct GolpeAttributes { /// The [Golpe] element represents the golpe symbol that is used for tapping the pick guard in guitar music. /// /// ![Golpe](https://hedgetechllc.github.io/musicxml/musicxml/elements/golpe.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Golpe { /// Element-specific attributes pub attributes: GolpeAttributes, diff --git a/musicxml/src/elements/grace.rs b/musicxml/src/elements/grace.rs index b370652..05e874b 100644 --- a/musicxml/src/elements/grace.rs +++ b/musicxml/src/elements/grace.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Grace] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct GraceAttributes { /// Indicates to make time, not steal time, for grace note playback. /// The units are in real-time divisions for the grace note. @@ -20,7 +20,7 @@ pub struct GraceAttributes { /// The [Grace] element indicates the presence of a grace note. /// /// ![Grace](https://hedgetechllc.github.io/musicxml/musicxml/elements/grace.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Grace { /// Element-specific attributes pub attributes: GraceAttributes, diff --git a/musicxml/src/elements/group.rs b/musicxml/src/elements/group.rs index f6aac92..5375c1e 100644 --- a/musicxml/src/elements/group.rs +++ b/musicxml/src/elements/group.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Group] element allows the use of different versions of the part for different purposes. /// /// Typical values include "score," "parts," "sound," and "data". Ordering information can be derived from the ordering within a MusicXML score or opus. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Group { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/group_abbreviation.rs b/musicxml/src/elements/group_abbreviation.rs index c1e0724..8ac3fab 100644 --- a/musicxml/src/elements/group_abbreviation.rs +++ b/musicxml/src/elements/group_abbreviation.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [GroupAbbreviation] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct GroupAbbreviationAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct GroupAbbreviationAttributes { /// The [GroupAbbreviation] element describes the abbreviation of a [PartGroup][super::PartGroup] element. /// /// The formatting attributes are deprecated as of Version 2.0 in favor of the new [GroupAbbreviationDisplay][super::GroupAbbreviationDisplay] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("group-abbreviation")] pub struct GroupAbbreviation { /// Element-specific attributes diff --git a/musicxml/src/elements/group_abbreviation_display.rs b/musicxml/src/elements/group_abbreviation_display.rs index e71e1e7..ab2ecb6 100644 --- a/musicxml/src/elements/group_abbreviation_display.rs +++ b/musicxml/src/elements/group_abbreviation_display.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [GroupAbbreviationDisplay] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct GroupAbbreviationDisplayAttributes { /// Specifies whether or not to print an object. It is yes if not specified. pub print_object: Option, } /// Contents of the [GroupAbbreviationDisplay] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct GroupAbbreviationDisplayContents { /// The [DisplayText] element specifies the text of the group abbreviation. pub display_text: Vec, @@ -26,7 +26,7 @@ pub struct GroupAbbreviationDisplayContents { /// /// Formatting specified in the [GroupAbbreviationDisplay] element overrides formatting specified in the /// [GroupAbbreviation][super::GroupAbbreviation] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("group-abbreviation-display")] pub struct GroupAbbreviationDisplay { /// Element-specific attributes diff --git a/musicxml/src/elements/group_barline.rs b/musicxml/src/elements/group_barline.rs index b6a779d..ec9112b 100644 --- a/musicxml/src/elements/group_barline.rs +++ b/musicxml/src/elements/group_barline.rs @@ -4,14 +4,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [GroupBarline] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct GroupBarlineAttributes { /// Indicates the color of an element. pub color: Option, } /// The [GroupBarline] element indicates if the group should have common barlines. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("group-barline")] pub struct GroupBarline { /// Element-specific attributes diff --git a/musicxml/src/elements/group_link.rs b/musicxml/src/elements/group_link.rs index 222c8ff..83ac421 100644 --- a/musicxml/src/elements/group_link.rs +++ b/musicxml/src/elements/group_link.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// /// The optional [GroupLink] elements identify the groups used in the linked document. The content of a [GroupLink] element should match the content /// of a [Group][super::Group] element in the linked document. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("group-link")] pub struct GroupLink { /// Element-specific attributes diff --git a/musicxml/src/elements/group_name.rs b/musicxml/src/elements/group_name.rs index b498005..7e5867c 100644 --- a/musicxml/src/elements/group_name.rs +++ b/musicxml/src/elements/group_name.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [GroupName] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct GroupNameAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct GroupNameAttributes { /// The [GroupName] element describes the name of a [PartGroup][super::PartGroup] element. /// /// The formatting attributes are deprecated as of Version 2.0 in favor of the new [GroupNameDisplay][super::GroupNameDisplay] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("group-name")] pub struct GroupName { /// Element-specific attributes diff --git a/musicxml/src/elements/group_name_display.rs b/musicxml/src/elements/group_name_display.rs index cec2924..8df1cc3 100644 --- a/musicxml/src/elements/group_name_display.rs +++ b/musicxml/src/elements/group_name_display.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [GroupNameDisplay] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct GroupNameDisplayAttributes { /// Specifies whether or not to print an object. It is yes if not specified. pub print_object: Option, } /// Contents of the [GroupNameDisplay] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct GroupNameDisplayContents { /// The [DisplayText] element specifies the text to display for the group name. pub display_text: Vec, @@ -25,7 +25,7 @@ pub struct GroupNameDisplayContents { /// The `print_object` attribute can be used to determine what, if anything, is printed at the start of each system. /// /// Formatting specified in the [GroupNameDisplay] element overrides formatting specified in the [GroupName][super::GroupName] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("group-name-display")] pub struct GroupNameDisplay { /// Element-specific attributes diff --git a/musicxml/src/elements/group_symbol.rs b/musicxml/src/elements/group_symbol.rs index 25a8f5c..258ad64 100644 --- a/musicxml/src/elements/group_symbol.rs +++ b/musicxml/src/elements/group_symbol.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [GroupSymbol] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct GroupSymbolAttributes { /// Indicates the color of an element. pub color: Option, @@ -32,7 +32,7 @@ pub struct GroupSymbolAttributes { /// The [GroupSymbol] element indicates how the symbol for a group is indicated in the score. /// /// It is none if not specified. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("group-symbol")] pub struct GroupSymbol { /// Element-specific attributes diff --git a/musicxml/src/elements/group_time.rs b/musicxml/src/elements/group_time.rs index 3ac0b08..1811a12 100644 --- a/musicxml/src/elements/group_time.rs +++ b/musicxml/src/elements/group_time.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [GroupTime] element indicates that the displayed time signatures should stretch across all parts and staves in the group. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("group-time")] pub struct GroupTime { /// Element-specific attributes diff --git a/musicxml/src/elements/grouping.rs b/musicxml/src/elements/grouping.rs index 8c8fb34..45d9ca0 100644 --- a/musicxml/src/elements/grouping.rs +++ b/musicxml/src/elements/grouping.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Grouping] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct GroupingAttributes { /// Indicates if this is a single-note grouping, or the start or stop of a multi-note grouping. pub r#type: StartStopSingle, @@ -18,7 +18,7 @@ pub struct GroupingAttributes { } /// Contents of the [Grouping] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct GroupingContents { /// The [Feature] element is used for musical analysis. pub feature: Vec, @@ -31,7 +31,7 @@ pub struct GroupingContents { /// /// This element is flexible to allow for different types of analyses. Future versions of the MusicXML format may add elements that can represent more /// standardized categories of analysis data, allowing for easier data sharing. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Grouping { /// Element-specific attributes pub attributes: GroupingAttributes, diff --git a/musicxml/src/elements/half_muted.rs b/musicxml/src/elements/half_muted.rs index d73600e..66def1d 100644 --- a/musicxml/src/elements/half_muted.rs +++ b/musicxml/src/elements/half_muted.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [HalfMuted] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct HalfMutedAttributes { /// Indicates the color of an element. pub color: Option, @@ -48,7 +48,7 @@ pub struct HalfMutedAttributes { /// /// The `smufl` attribute can be used to distinguish different SMuFL glyphs that have a similar appearance such as "brassMuteHalfClosed" and "guitarHalfOpenPedal". /// If not present, the default glyph is "brassMuteHalfClosed". -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("half-muted")] pub struct HalfMuted { /// Element-specific attributes diff --git a/musicxml/src/elements/hammer_on.rs b/musicxml/src/elements/hammer_on.rs index 0c2eaa8..d50dedd 100644 --- a/musicxml/src/elements/hammer_on.rs +++ b/musicxml/src/elements/hammer_on.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [HammerOn] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct HammerOnAttributes { /// Indicates if this is the start or stop of the hammer-on. pub r#type: StartStop, @@ -51,7 +51,7 @@ pub struct HammerOnAttributes { /// /// Since a single slur can be marked over many notes, the [HammerOn] element is separate so the individual pair of notes can be specified. /// The element content can be used to specify how the [HammerOn] should be notated. An empty element leaves this choice up to the application. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("hammer-on")] pub struct HammerOn { /// Element-specific attributes diff --git a/musicxml/src/elements/handbell.rs b/musicxml/src/elements/handbell.rs index cee9f5c..39f9bf2 100644 --- a/musicxml/src/elements/handbell.rs +++ b/musicxml/src/elements/handbell.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Handbell] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct HandbellAttributes { /// Indicates the color of an element. pub color: Option, @@ -40,7 +40,7 @@ pub struct HandbellAttributes { } /// The [Handbell] element represents notation for various techniques used in handbell and handchime music. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Handbell { /// Element-specific attributes pub attributes: HandbellAttributes, diff --git a/musicxml/src/elements/harmon_closed.rs b/musicxml/src/elements/harmon_closed.rs index baf3c5d..a281bc9 100644 --- a/musicxml/src/elements/harmon_closed.rs +++ b/musicxml/src/elements/harmon_closed.rs @@ -4,14 +4,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [HarmonClosed] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct HarmonClosedAttributes { /// Indicates which portion of the symbol is filled in when the element value is half. pub location: Option, } /// The [HarmonClosed] element represents whether the harmon mute is closed, open, or half-open. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("harmon-closed")] pub struct HarmonClosed { /// Element-specific attributes diff --git a/musicxml/src/elements/harmon_mute.rs b/musicxml/src/elements/harmon_mute.rs index 42190dd..77007f7 100644 --- a/musicxml/src/elements/harmon_mute.rs +++ b/musicxml/src/elements/harmon_mute.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [HarmonMute] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct HarmonMuteAttributes { /// Indicates the color of an element. pub color: Option, @@ -41,7 +41,7 @@ pub struct HarmonMuteAttributes { } /// Contents of the [HarmonMute] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct HarmonMuteContents { /// The [HarmonClosed] element represents the symbols used for harmon mutes in brass notation. pub harmon_closed: HarmonClosed, @@ -50,7 +50,7 @@ pub struct HarmonMuteContents { /// The [HarmonMute] element represents the symbols used for harmon mutes in brass notation. /// /// ![HarmonMute](https://hedgetechllc.github.io/musicxml/musicxml/elements/harmon-mute.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("harmon-mute")] pub struct HarmonMute { /// Element-specific attributes diff --git a/musicxml/src/elements/harmonic.rs b/musicxml/src/elements/harmonic.rs index 52a0e32..428130e 100644 --- a/musicxml/src/elements/harmonic.rs +++ b/musicxml/src/elements/harmonic.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Harmonic] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct HarmonicAttributes { /// Indicates the color of an element. pub color: Option, @@ -43,7 +43,7 @@ pub struct HarmonicAttributes { } /// Contents of the [Harmonic] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct HarmonicContents { /// The [Natural] element indicates natural harmonics. pub natural: Option, @@ -62,7 +62,7 @@ pub struct HarmonicContents { /// Allowing the type of pitch to be specified, combined with controls for appearance/playback differences, allows both the notation and the /// sound to be represented. Artificial harmonics can add a notated touching pitch; artificial pinch harmonics will usually not notate a touching pitch. /// The attributes for the [Harmonic] element refer to the use of the circular harmonic symbol, typically but not always used with natural harmonics. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Harmonic { /// Element-specific attributes pub attributes: HarmonicAttributes, diff --git a/musicxml/src/elements/harmony.rs b/musicxml/src/elements/harmony.rs index 80046d7..93a0c39 100644 --- a/musicxml/src/elements/harmony.rs +++ b/musicxml/src/elements/harmony.rs @@ -10,7 +10,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Harmony] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct HarmonyAttributes { /// Specifies how multiple harmony-chords are arranged relative to each other. /// Harmony-chords with vertical arrangement are separated by horizontal lines. @@ -61,7 +61,7 @@ pub struct HarmonyAttributes { } /// Contents of the [HarmonySubcontents] element. -#[derive(Debug, PartialEq, Eq, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentSerialize)] pub struct HarmonySubcontents { /// The [Root] element specifies the root of a harmony-chord. pub root: Option, @@ -80,7 +80,7 @@ pub struct HarmonySubcontents { } /// Contents of the [Harmony] element. -#[derive(Debug, Default, PartialEq, Eq)] +#[derive(Debug, Default, PartialEq, Eq, Clone)] pub struct HarmonyContents { /// The [HarmonySubcontents] element specifies the root, numeral, function, kind, inversion, bass, and degree of a harmony-chord. pub harmony: Vec, @@ -190,7 +190,7 @@ impl ContentSerializer for HarmonyContents { /// A [Root] is a pitch name like C, D, E, while a [Numeral] is a scale degree like 1, 2, 3. The [Root] element is generally used with pop chord symbols, /// while the [Numeral] element is generally used with classical functional harmony and Nashville numbers. It is an either/or choice to avoid data inconsistency. /// The [Function] element, which represents Roman numerals with roman numeral text, has been deprecated as of MusicXML 4.0. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Harmony { /// Element-specific attributes pub attributes: HarmonyAttributes, diff --git a/musicxml/src/elements/harp_pedals.rs b/musicxml/src/elements/harp_pedals.rs index f91f4a0..2ea1c13 100644 --- a/musicxml/src/elements/harp_pedals.rs +++ b/musicxml/src/elements/harp_pedals.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [HarpPedals] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct HarpPedalsAttributes { /// Indicates the color of an element. pub color: Option, @@ -56,7 +56,7 @@ pub struct HarpPedalsAttributes { } /// Contents of the [HarpPedals] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct HarpPedalsContents { /// The [PedalTuning] element specifies the tuning of a single harp pedal. pub pedal_tuning: Vec, @@ -69,7 +69,7 @@ pub struct HarpPedalsContents { /// The [PedalStep][super::PedalStep] and [PedalAlter][super::PedalAlter] elements use the same values /// as the [Step][super::Step] and [Alter][super::Alter] elements. For easiest reading, the [PedalTuning] elements should follow standard harp pedal order, /// with [PedalStep][super::PedalStep] values of D, C, B, E, F, G, and A. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("harp-pedals")] pub struct HarpPedals { /// Element-specific attributes diff --git a/musicxml/src/elements/haydn.rs b/musicxml/src/elements/haydn.rs index 55e9733..9262197 100644 --- a/musicxml/src/elements/haydn.rs +++ b/musicxml/src/elements/haydn.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Haydn] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct HaydnAttributes { /// If yes, the trill accelerates during playback. It is no if not specified. pub accelerate: Option, @@ -61,7 +61,7 @@ pub struct HaydnAttributes { /// ![Haydn](https://hedgetechllc.github.io/musicxml/musicxml/elements/haydn.png) /// /// This is defined in the Standard Music Font Layout (SMuFL) as ornamentHaydn. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Haydn { /// Element-specific attributes pub attributes: HaydnAttributes, diff --git a/musicxml/src/elements/heel.rs b/musicxml/src/elements/heel.rs index 3ef15a9..84978a2 100644 --- a/musicxml/src/elements/heel.rs +++ b/musicxml/src/elements/heel.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Heel] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct HeelAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct HeelAttributes { /// The [Heel] element is used with organ pedals. /// /// ![Heel](https://hedgetechllc.github.io/musicxml/musicxml/elements/heel.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Heel { /// Element-specific attributes pub attributes: HeelAttributes, diff --git a/musicxml/src/elements/hole.rs b/musicxml/src/elements/hole.rs index a71bbab..4fb603b 100644 --- a/musicxml/src/elements/hole.rs +++ b/musicxml/src/elements/hole.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Hole] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct HoleAttributes { /// Indicates the color of an element. pub color: Option, @@ -41,7 +41,7 @@ pub struct HoleAttributes { } /// Contents of the [Hole] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct HoleContents { /// The [HoleType] element specifies the type of hole. pub hole_type: Option, @@ -54,7 +54,7 @@ pub struct HoleContents { /// The [Hole] element represents the symbols used for woodwind and brass fingerings as well as other notations. /// /// ![Hole](https://hedgetechllc.github.io/musicxml/musicxml/elements/hole.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Hole { /// Element-specific attributes pub attributes: HoleAttributes, diff --git a/musicxml/src/elements/hole_closed.rs b/musicxml/src/elements/hole_closed.rs index 1838553..12e5443 100644 --- a/musicxml/src/elements/hole_closed.rs +++ b/musicxml/src/elements/hole_closed.rs @@ -4,14 +4,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [HoleClosed] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct HoleClosedAttributes { /// Indicates which portion of the hole is filled in when the element value is half. pub location: Option, } /// The [HoleClosed] element represents whether the hole is closed, open, or half-open. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("hole-closed")] pub struct HoleClosed { /// Element-specific attributes diff --git a/musicxml/src/elements/hole_shape.rs b/musicxml/src/elements/hole_shape.rs index 3c60ca0..1a9c600 100644 --- a/musicxml/src/elements/hole_shape.rs +++ b/musicxml/src/elements/hole_shape.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [HoleShape] element indicates the shape of the hole symbol. /// /// It is a circle if not specified. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("hole-shape")] pub struct HoleShape { /// Element-specific attributes diff --git a/musicxml/src/elements/hole_type.rs b/musicxml/src/elements/hole_type.rs index f183035..27814d9 100644 --- a/musicxml/src/elements/hole_type.rs +++ b/musicxml/src/elements/hole_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The content of the [HoleType] element indicates what the hole symbol represents in terms of instrument fingering or other techniques. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("hole-type")] pub struct HoleType { /// Element-specific attributes diff --git a/musicxml/src/elements/humming.rs b/musicxml/src/elements/humming.rs index e17036e..96612f1 100644 --- a/musicxml/src/elements/humming.rs +++ b/musicxml/src/elements/humming.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [Humming] element represents a humming voice. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Humming { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/identification.rs b/musicxml/src/elements/identification.rs index c5b7074..0d9f085 100644 --- a/musicxml/src/elements/identification.rs +++ b/musicxml/src/elements/identification.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Identification] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct IdentificationContents { /// The [Creator] element specifies the creator of the score. pub creator: Vec, @@ -24,7 +24,7 @@ pub struct IdentificationContents { /// /// It includes information that may apply at a score-wide, movement-wide, or part-wide level. The [Creator], [Rights], [Source], /// and [Relation] elements are based on [Dublin Core](https://www.dublincore.org/specifications/dublin-core/dcmi-terms/). -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Identification { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/image.rs b/musicxml/src/elements/image.rs index 54a0958..c530e1a 100644 --- a/musicxml/src/elements/image.rs +++ b/musicxml/src/elements/image.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Image] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ImageAttributes { /// The URL for the image file. pub source: AnyUri, @@ -55,7 +55,7 @@ pub struct ImageAttributes { } /// The [Image] element is used to include graphical images in a score. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Image { /// Element-specific attributes pub attributes: ImageAttributes, diff --git a/musicxml/src/elements/instrument.rs b/musicxml/src/elements/instrument.rs index 67a5ff7..dab7d5e 100644 --- a/musicxml/src/elements/instrument.rs +++ b/musicxml/src/elements/instrument.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Instrument] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct InstrumentAttributes { /// Specifies an ID that is unique to the entire document. pub id: IdRef, @@ -15,7 +15,7 @@ pub struct InstrumentAttributes { /// If multiple [ScoreInstrument][super::ScoreInstrument] elements are specified in a [ScorePart][super::ScorePart], there should be an /// [Instrument] element for each note in the [Part][super::Part]. Notes that are shared between multiple [ScoreInstruments][super::ScoreInstrument] /// can have more than one [Instrument] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Instrument { /// Element-specific attributes pub attributes: InstrumentAttributes, diff --git a/musicxml/src/elements/instrument_abbreviation.rs b/musicxml/src/elements/instrument_abbreviation.rs index 8f6b5b2..a85419a 100644 --- a/musicxml/src/elements/instrument_abbreviation.rs +++ b/musicxml/src/elements/instrument_abbreviation.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [InstrumentAbbreviation] element is typically used within a software application, rather than appearing on the printed page of a score. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("instrument-abbreviation")] pub struct InstrumentAbbreviation { /// Element-specific attributes diff --git a/musicxml/src/elements/instrument_change.rs b/musicxml/src/elements/instrument_change.rs index 9f9f14b..186a424 100644 --- a/musicxml/src/elements/instrument_change.rs +++ b/musicxml/src/elements/instrument_change.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [InstrumentChange] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct InstrumentChangeAttributes { /// Specifies an ID that is unique to the entire document. pub id: IdRef, } /// Contents of the [InstrumentChange] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct InstrumentChangeContents { /// The [InstrumentSound] element specifies the virtual instrument sound to use for a given [ScoreInstrument][super::ScoreInstrument]. pub instrument_sound: Option, @@ -27,7 +27,7 @@ pub struct InstrumentChangeContents { /// The [InstrumentChange] element type represents a change to the virtual instrument sound for a given [ScoreInstrument][super::ScoreInstrument]. /// /// All [InstrumentChange] child elements can also be initially specified within the [ScoreInstrument][super::ScoreInstrument] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("instrument-change")] pub struct InstrumentChange { /// Element-specific attributes diff --git a/musicxml/src/elements/instrument_link.rs b/musicxml/src/elements/instrument_link.rs index fff152a..25ba824 100644 --- a/musicxml/src/elements/instrument_link.rs +++ b/musicxml/src/elements/instrument_link.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [InstrumentLink] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct InstrumentLinkAttributes { /// Specifies an ID that is unique to the entire document. pub id: IdRef, @@ -15,7 +15,7 @@ pub struct InstrumentLinkAttributes { /// For example, a "Clarinet 1 and 2" part in a score file could link to separate "Clarinet 1" and "Clarinet 2" part files. /// The [InstrumentLink] element distinguishes which of the [ScoreInstruments][super::ScoreInstrument] within a [ScorePart][super::ScorePart] /// are in which part file. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("instrument-link")] pub struct InstrumentLink { /// Element-specific attributes diff --git a/musicxml/src/elements/instrument_name.rs b/musicxml/src/elements/instrument_name.rs index dcc4c9e..3755618 100644 --- a/musicxml/src/elements/instrument_name.rs +++ b/musicxml/src/elements/instrument_name.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [InstrumentName] element is typically used within a software application, rather than appearing on the printed page of a score. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("instrument-name")] pub struct InstrumentName { /// Element-specific attributes diff --git a/musicxml/src/elements/instrument_sound.rs b/musicxml/src/elements/instrument_sound.rs index 5c32210..f54cb9c 100644 --- a/musicxml/src/elements/instrument_sound.rs +++ b/musicxml/src/elements/instrument_sound.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// /// This description is independent of a particular virtual or MIDI instrument specification and allows playback to be shared /// more easily between applications and libraries. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("instrument-sound")] pub struct InstrumentSound { /// Element-specific attributes diff --git a/musicxml/src/elements/instruments.rs b/musicxml/src/elements/instruments.rs index b3009bd..f87ad8f 100644 --- a/musicxml/src/elements/instruments.rs +++ b/musicxml/src/elements/instruments.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// The [Instruments] element is only used if more than one instrument is represented in the part. /// /// For example, oboe I and II where they play together most of the time. If absent, a value of 1 is assumed. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Instruments { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/interchangeable.rs b/musicxml/src/elements/interchangeable.rs index bcf76bc..ffdea3a 100644 --- a/musicxml/src/elements/interchangeable.rs +++ b/musicxml/src/elements/interchangeable.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Interchangeable] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct InterchangeableAttributes { /// Indicates how to display the arrangement between the [Beats] and [BeatType] values in the second of the dual time signatures. pub separator: Option, @@ -14,7 +14,7 @@ pub struct InterchangeableAttributes { } /// Contents of the [InterchangeableBeatData] element. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct InterchangeableBeatData { /// The number of beats in the second of the dual time signatures. pub beats: Beats, @@ -23,7 +23,7 @@ pub struct InterchangeableBeatData { } /// Contents of the [Interchangeable] element. -#[derive(Debug, Default, PartialEq, Eq)] +#[derive(Debug, Default, PartialEq, Eq, Clone)] pub struct InterchangeableContents { /// The time relation between the two dual time signatures. pub time_relation: Option, @@ -79,7 +79,7 @@ impl ContentSerializer for InterchangeableContents { } /// The [Interchangeable] element is used to represent the second in a pair of interchangeable dual time signatures, such as the 6/8 in 3/4 (6/8). -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Interchangeable { /// Element-specific attributes pub attributes: InterchangeableAttributes, diff --git a/musicxml/src/elements/inversion.rs b/musicxml/src/elements/inversion.rs index de1e9d2..66d88f5 100644 --- a/musicxml/src/elements/inversion.rs +++ b/musicxml/src/elements/inversion.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Inversion] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct InversionAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct InversionAttributes { /// The [Inversion] element represents harmony inversions. /// /// The value is a number indicating which inversion is used: 0 for root position, 1 for first inversion, etc. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Inversion { /// Element-specific attributes pub attributes: InversionAttributes, diff --git a/musicxml/src/elements/inverted_mordent.rs b/musicxml/src/elements/inverted_mordent.rs index 70cb846..fbbb5da 100644 --- a/musicxml/src/elements/inverted_mordent.rs +++ b/musicxml/src/elements/inverted_mordent.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [InvertedMordent] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct InvertedMordentAttributes { /// If yes, the trill accelerates during playback. It is no if not specified. pub accelerate: Option, @@ -67,7 +67,7 @@ pub struct InvertedMordentAttributes { /// ![InvertedMordent](https://hedgetechllc.github.io/musicxml/musicxml/elements/inverted-mordent.png) /// /// The choice of which mordent is inverted differs between MusicXML and the Standard Music Font Layout (SMuFL). -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("inverted-mordent")] pub struct InvertedMordent { /// Element-specific attributes diff --git a/musicxml/src/elements/inverted_turn.rs b/musicxml/src/elements/inverted_turn.rs index 1441c52..282c3d8 100644 --- a/musicxml/src/elements/inverted_turn.rs +++ b/musicxml/src/elements/inverted_turn.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [InvertedTurn] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct InvertedTurnAttributes { /// If yes, the trill accelerates during playback. It is no if not specified. pub accelerate: Option, @@ -61,7 +61,7 @@ pub struct InvertedTurnAttributes { /// The [InvertedTurn] element has the shape which goes down and then up. /// /// ![InvertedTurn](https://hedgetechllc.github.io/musicxml/musicxml/elements/inverted-turn.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("inverted-turn")] pub struct InvertedTurn { /// Element-specific attributes diff --git a/musicxml/src/elements/inverted_vertical_turn.rs b/musicxml/src/elements/inverted_vertical_turn.rs index 36384dd..dd09028 100644 --- a/musicxml/src/elements/inverted_vertical_turn.rs +++ b/musicxml/src/elements/inverted_vertical_turn.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [InvertedVerticalTurn] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct InvertedVerticalTurnAttributes { /// If yes, the trill accelerates during playback. It is no if not specified. pub accelerate: Option, @@ -59,7 +59,7 @@ pub struct InvertedVerticalTurnAttributes { /// The [InvertedVerticalTurn] element has the turn symbol shape arranged vertically going from upper right to lower left. /// /// ![InvertedVerticalTurn](https://hedgetechllc.github.io/musicxml/musicxml/elements/inverted-vertical-turn.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("inverted-vertical-turn")] pub struct InvertedVerticalTurn { /// Element-specific attributes diff --git a/musicxml/src/elements/ipa.rs b/musicxml/src/elements/ipa.rs index b480904..ee47d1f 100644 --- a/musicxml/src/elements/ipa.rs +++ b/musicxml/src/elements/ipa.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Ipa] element represents International Phonetic Alphabet (IPA) sounds for vocal music. /// /// String content is limited to IPA 2015 symbols represented in Unicode 13.0. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Ipa { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/key.rs b/musicxml/src/elements/key.rs index cca244f..395fc3c 100644 --- a/musicxml/src/elements/key.rs +++ b/musicxml/src/elements/key.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Key] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct KeyAttributes { /// Indicates the color of an element. pub color: Option, @@ -45,7 +45,7 @@ pub struct KeyAttributes { } /// Contents of the [ExplicitKeyContents] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct ExplicitKeyContents { /// The [Cancel] element indicates the cancellation of a previous key signature. pub cancel: Option, @@ -58,7 +58,7 @@ pub struct ExplicitKeyContents { } /// Contents of the [RelativeKeyContents] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct RelativeKeyContents { /// The [KeyStep] element represents the pitch step of the key signature. pub key_step: KeyStep, @@ -73,7 +73,7 @@ pub struct RelativeKeyContents { /// Contents of the [Key] element. /// /// The [Key] element may contain either [ExplicitKeyContents] or [RelativeKeyContents]. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum KeyContents { /// The [ExplicitKeyContents] element represents a key signature with a specified number of flats or sharps. Explicit(ExplicitKeyContents), @@ -104,7 +104,7 @@ impl ContentSerializer for KeyContents { /// /// Both traditional and non-traditional key signatures are supported. Key signatures appear at the start of each system /// unless the `print_object` attribute has been set to "no". -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Key { /// Element-specific attributes pub attributes: KeyAttributes, diff --git a/musicxml/src/elements/key_accidental.rs b/musicxml/src/elements/key_accidental.rs index 1076a11..7526406 100644 --- a/musicxml/src/elements/key_accidental.rs +++ b/musicxml/src/elements/key_accidental.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [KeyAccidental] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct KeyAccidentalAttributes { /// Specifies a Standard Music Font Layout (SMuFL) accidental character by its canonical glyph name. pub smufl: Option, @@ -15,7 +15,7 @@ pub struct KeyAccidentalAttributes { /// /// It is used for disambiguating microtonal accidentals. The different element names indicate the different meaning of altering notes /// in a scale versus altering a sounding pitch. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("key-accidental")] pub struct KeyAccidental { /// Element-specific attributes diff --git a/musicxml/src/elements/key_alter.rs b/musicxml/src/elements/key_alter.rs index 3475802..a8e68ea 100644 --- a/musicxml/src/elements/key_alter.rs +++ b/musicxml/src/elements/key_alter.rs @@ -7,7 +7,7 @@ use musicxml_macros::*; /// as the [Alter][super::Alter] element. /// /// The different element names indicate the different meaning of altering notes in a scale versus altering a sounding pitch. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("key-alter")] pub struct KeyAlter { /// Element-specific attributes diff --git a/musicxml/src/elements/key_octave.rs b/musicxml/src/elements/key_octave.rs index c898bfc..f4f1579 100644 --- a/musicxml/src/elements/key_octave.rs +++ b/musicxml/src/elements/key_octave.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [KeyOctave] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct KeyOctaveAttributes { /// A positive integer that refers to the key signature element in left-to-right order. pub number: PositiveInteger, @@ -17,7 +17,7 @@ pub struct KeyOctaveAttributes { /// The [KeyOctave] element specifies in which octave an element of a key signature appears. /// /// The content specifies the octave value using the same values as the [DisplayOctave][super::DisplayOctave] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("key-octave")] pub struct KeyOctave { /// Element-specific attributes diff --git a/musicxml/src/elements/key_step.rs b/musicxml/src/elements/key_step.rs index 49f87cb..5a80159 100644 --- a/musicxml/src/elements/key_step.rs +++ b/musicxml/src/elements/key_step.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// The [KeyStep] element indicates the pitch step to be altered, represented using the same names as in the [Step][super::Step] element. /// /// The different element names indicate the different meaning of altering notes in a scale versus altering a sounding pitch. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("key-step")] pub struct KeyStep { /// Element-specific attributes diff --git a/musicxml/src/elements/kind.rs b/musicxml/src/elements/kind.rs index 483f141..e0dfee0 100644 --- a/musicxml/src/elements/kind.rs +++ b/musicxml/src/elements/kind.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Kind] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct KindAttributes { /// The `bracket_degrees`` attribute is yes if all the degrees should be in a bracket. The default is implementation-dependent. pub bracket_degrees: Option, @@ -85,7 +85,7 @@ pub struct KindAttributes { /// /// The `text` attribute may use strings such as "13sus" that refer to both the kind and one or more [Degree][super::Degree] elements. In this case, /// the corresponding [Degree][super::Degree] elements should have the `print_object` attribute set to "no" to keep redundant alterations from being displayed. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Kind { /// Element-specific attributes pub attributes: KindAttributes, diff --git a/musicxml/src/elements/laughing.rs b/musicxml/src/elements/laughing.rs index b61f5bb..09e9f0a 100644 --- a/musicxml/src/elements/laughing.rs +++ b/musicxml/src/elements/laughing.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [Laughing] element represents a laughing voice. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Laughing { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/left_divider.rs b/musicxml/src/elements/left_divider.rs index 53d1f17..7e0f37b 100644 --- a/musicxml/src/elements/left_divider.rs +++ b/musicxml/src/elements/left_divider.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [LeftDivider] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct LeftDividerAttributes { /// Indicates the color of an element. pub color: Option, @@ -58,7 +58,7 @@ pub struct LeftDividerAttributes { /// /// The default vertical position is half the [SystemDistance][super::SystemDistance] value from the top of the system that is below the divider. /// The default horizontal position is the left system margin. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("left-divider")] pub struct LeftDivider { /// Element-specific attributes diff --git a/musicxml/src/elements/left_margin.rs b/musicxml/src/elements/left_margin.rs index d848f7c..7f0dae0 100644 --- a/musicxml/src/elements/left_margin.rs +++ b/musicxml/src/elements/left_margin.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [LeftMargin] element specifies the left margin for the parent element in tenths. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("left-margin")] pub struct LeftMargin { /// Element-specific attributes diff --git a/musicxml/src/elements/level.rs b/musicxml/src/elements/level.rs index 324cad4..dbd7f1d 100644 --- a/musicxml/src/elements/level.rs +++ b/musicxml/src/elements/level.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Level] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct LevelAttributes { /// Specifies whether or not brackets are put around a symbol for an editorial indication. If not specified, it is left to application defaults. pub bracket: Option, @@ -24,7 +24,7 @@ pub struct LevelAttributes { /// The [Level] element is used to specify editorial information for different MusicXML elements. /// /// The content contains identifying and/or descriptive text about the editorial status of the parent element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Level { /// Element-specific attributes pub attributes: LevelAttributes, diff --git a/musicxml/src/elements/line.rs b/musicxml/src/elements/line.rs index ce2adbd..1c115e1 100644 --- a/musicxml/src/elements/line.rs +++ b/musicxml/src/elements/line.rs @@ -8,7 +8,7 @@ use musicxml_macros::*; /// They are only needed with the G, F, and C signs in order to position a pitch correctly on the staff. /// Standard values are 2 for the G sign (treble clef), 4 for the F sign (bass clef), and 3 for the C sign (alto clef). /// Line values can be used to specify positions outside the staff, such as a C clef positioned in the middle of a grand staff. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Line { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/line_detail.rs b/musicxml/src/elements/line_detail.rs index 6cfbf7f..c6da6d7 100644 --- a/musicxml/src/elements/line_detail.rs +++ b/musicxml/src/elements/line_detail.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [LineDetail] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct LineDetailAttributes { /// Indicates the staff line affected, numbered from bottom to top. pub line: StaffLine, @@ -25,7 +25,7 @@ pub struct LineDetailAttributes { /// where a note placed below the higher line is distinct from a note placed above the lower line. Hidden staff lines are included when specifying clef /// lines and determining [DisplayStep][super::DisplayStep] / [DisplayOctave][super::DisplayOctave] values, but are not counted as lines for the purposes /// of the [SystemLayout][super::SystemLayout] and [StaffLayout][super::StaffLayout] elements. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("line-detail")] pub struct LineDetail { /// Element-specific attributes diff --git a/musicxml/src/elements/line_width.rs b/musicxml/src/elements/line_width.rs index 1331dc7..2a96c6e 100644 --- a/musicxml/src/elements/line_width.rs +++ b/musicxml/src/elements/line_width.rs @@ -4,14 +4,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [LineWidth] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct LineWidthAttributes { /// The type of line whose width is being defined. pub r#type: LineWidthType, } /// The [LineWidth] element indicates the width of a specific line type in tenths. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("line-width")] pub struct LineWidth { /// Element-specific attributes diff --git a/musicxml/src/elements/link.rs b/musicxml/src/elements/link.rs index 99b146b..d03a878 100644 --- a/musicxml/src/elements/link.rs +++ b/musicxml/src/elements/link.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Link] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct LinkAttributes { /// The `xlink_href` attribute provides the data that allows an application to find a remote resource or resource fragment. /// See the definition in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#link-locators). @@ -60,7 +60,7 @@ pub struct LinkAttributes { /// The [Link] element serves as an outgoing simple XLink. /// /// If a relative link is used within a document that is part of a compressed MusicXML file, the link is relative to the root folder of the zip file. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Link { /// Element-specific attributes pub attributes: LinkAttributes, diff --git a/musicxml/src/elements/listen.rs b/musicxml/src/elements/listen.rs index d430081..c56cf52 100644 --- a/musicxml/src/elements/listen.rs +++ b/musicxml/src/elements/listen.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [ListenContents] element specifies all possible options available for use in a [Listen] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub enum ListenContents { /// The [Assess] element specifies the assessment of a performance. Assess(Assess), @@ -20,7 +20,7 @@ pub enum ListenContents { /// /// The [Listen] element handles interactions that are specific to a note. If multiple child elements of the same type are present, /// they should have distinct `player` and/or `time_only` attributes. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Listen { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/listening.rs b/musicxml/src/elements/listening.rs index e011ae4..8e628a2 100644 --- a/musicxml/src/elements/listening.rs +++ b/musicxml/src/elements/listening.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Listening] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct ListeningContents { /// The [Sync] element specifies the synchronization of the score-following or machine-listening data with the music. pub sync: Option, @@ -25,7 +25,7 @@ pub struct ListeningContents { /// /// Note that the [Offset] reflects the intended musical position for the change in state. It should not be used to compensate for latency issues in /// particular hardware configurations. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Listening { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/lyric.rs b/musicxml/src/elements/lyric.rs index dfb0230..08a7986 100644 --- a/musicxml/src/elements/lyric.rs +++ b/musicxml/src/elements/lyric.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Lyric] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct LyricAttributes { /// Indicates the color of an element. pub color: Option, @@ -48,7 +48,7 @@ pub struct LyricAttributes { } /// Contents of the [AdditionalTextLyric] element. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct AdditionalTextLyric { /// The [Elision] element represents an elision in a lyric. pub elision: Option, @@ -59,7 +59,7 @@ pub struct AdditionalTextLyric { } /// The [TextLyric] element represents the text of a lyric. -#[derive(Debug, Default, PartialEq, Eq)] +#[derive(Debug, Default, PartialEq, Eq, Clone)] pub struct TextLyric { /// The [Syllabic] element represents the type of syllable for a lyric. pub syllabic: Option, @@ -165,7 +165,7 @@ impl ContentSerializer for TextLyric { } /// The [ExtendLyric] element represents an extension of a lyric. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct ExtendLyric { /// The [Extend] element represents an extension of a lyric. pub extend: Extend, @@ -180,7 +180,7 @@ pub struct ExtendLyric { } /// The [LaughingLyric] element represents a laughing lyric. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct LaughingLyric { /// The [Laughing] element represents a laughing lyric. pub laughing: Laughing, @@ -195,7 +195,7 @@ pub struct LaughingLyric { } /// The [HummingLyric] element represents a humming lyric. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct HummingLyric { /// The [Humming] element represents a humming lyric. pub humming: Humming, @@ -212,7 +212,7 @@ pub struct HummingLyric { /// Contents of the [Lyric] element. /// /// The [Lyric] element may contain either a [TextLyric], [ExtendLyric], [LaughingLyric], or [HummingLyric]. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum LyricContents { /// The [TextLyric] element represents the text of a lyric. Text(TextLyric), @@ -265,7 +265,7 @@ impl ContentSerializer for LyricContents { /// /// The `print_object` attribute can override a [Note][super::Note]'s `print_lyric` attribute in cases where only some lyrics on a note are printed, /// as when lyrics for later verses are printed in a block of text rather than with each note. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Lyric { /// Element-specific attributes pub attributes: LyricAttributes, diff --git a/musicxml/src/elements/lyric_font.rs b/musicxml/src/elements/lyric_font.rs index 8330500..4634228 100644 --- a/musicxml/src/elements/lyric_font.rs +++ b/musicxml/src/elements/lyric_font.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [LyricFont] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct LyricFontAttributes { /// A comma-separated list of font names. pub font_family: Option, @@ -21,7 +21,7 @@ pub struct LyricFontAttributes { } /// The [LyricFont] element specifies the default font for a particular name and number of lyric. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("lyric-font")] pub struct LyricFont { /// Element-specific attributes diff --git a/musicxml/src/elements/lyric_language.rs b/musicxml/src/elements/lyric_language.rs index 491cdbd..6c52002 100644 --- a/musicxml/src/elements/lyric_language.rs +++ b/musicxml/src/elements/lyric_language.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [LyricLanguage] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct LyricLanguageAttributes { /// Specifies the language used in the element content. It is Italian ("it") if not specified. pub xml_lang: XmlLang, @@ -15,7 +15,7 @@ pub struct LyricLanguageAttributes { } /// The [LyricLanguage] element specifies the default language for a particular name and number of lyric. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("lyric-language")] pub struct LyricLanguage { /// Element-specific attributes diff --git a/musicxml/src/elements/measure.rs b/musicxml/src/elements/measure.rs index 7cf7e2a..12630c1 100644 --- a/musicxml/src/elements/measure.rs +++ b/musicxml/src/elements/measure.rs @@ -8,7 +8,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Measure] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MeasureAttributes { /// The attribute that identifies the measure. Going from partwise to timewise, measures are grouped via this attribute. /// In partwise files, it should be the same for measures in different parts that share the same left barline. @@ -36,7 +36,7 @@ pub struct MeasureAttributes { } /// The [MeasureElement] specifies all possible elements available for use in a [Measure] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub enum MeasureElement { /// The [Part] element is a container for musical data that is part of a score. Part(Part), @@ -72,7 +72,7 @@ pub enum MeasureElement { } /// The [Measure] element includes the basic musical data such as [Notes][super::Note] within a document. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Measure { /// Element-specific attributes pub attributes: MeasureAttributes, diff --git a/musicxml/src/elements/measure_distance.rs b/musicxml/src/elements/measure_distance.rs index 02ee02d..81cc34e 100644 --- a/musicxml/src/elements/measure_distance.rs +++ b/musicxml/src/elements/measure_distance.rs @@ -7,7 +7,7 @@ use musicxml_macros::*; /// /// This value is only used for systems where there is horizontal whitespace in the middle of a system, as in systems with codas. /// To specify the measure width, use the `width` attribute of the [Measure][super::Measure] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("measure-distance")] pub struct MeasureDistance { /// Element-specific attributes diff --git a/musicxml/src/elements/measure_layout.rs b/musicxml/src/elements/measure_layout.rs index 3a9eee1..31dac71 100644 --- a/musicxml/src/elements/measure_layout.rs +++ b/musicxml/src/elements/measure_layout.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [MeasureLayout] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct MeasureLayoutContents { /// The [MeasureDistance] element includes the horizontal distance from the previous measure. pub measure_distance: Option, @@ -13,7 +13,7 @@ pub struct MeasureLayoutContents { /// The [MeasureLayout] element includes the horizontal distance from the previous measure. /// /// It applies to the current measure only. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("measure-layout")] pub struct MeasureLayout { /// Element-specific attributes diff --git a/musicxml/src/elements/measure_numbering.rs b/musicxml/src/elements/measure_numbering.rs index b26d382..30e133f 100644 --- a/musicxml/src/elements/measure_numbering.rs +++ b/musicxml/src/elements/measure_numbering.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [MeasureNumbering] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MeasureNumberingAttributes { /// Indicates the color of an element. pub color: Option, @@ -74,7 +74,7 @@ pub struct MeasureNumberingAttributes { /// /// The `text` attribute from the [Measure][super::Measure] element is used for display, or the `number` attribute if the text attribute is not present. /// Measures with an `implicit` attribute set to yes never display a measure number, regardless of the [MeasureNumbering] setting. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("measure-numbering")] pub struct MeasureNumbering { /// Element-specific attributes diff --git a/musicxml/src/elements/measure_repeat.rs b/musicxml/src/elements/measure_repeat.rs index abb6d06..45a45a4 100644 --- a/musicxml/src/elements/measure_repeat.rs +++ b/musicxml/src/elements/measure_repeat.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [MeasureRepeat] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MeasureRepeatAttributes { /// Indicates the starting or stopping point of the section displaying the measure repeat symbols. pub r#type: Option, @@ -23,7 +23,7 @@ pub struct MeasureRepeatAttributes { /// /// The [MeasureRepeat] element specifies a notation style for repetitions. The actual music being repeated needs to be repeated within each measure of the MusicXML file. /// This element specifies the notation that indicates the repeat. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("measure-repeat")] pub struct MeasureRepeat { /// Element-specific attributes diff --git a/musicxml/src/elements/measure_style.rs b/musicxml/src/elements/measure_style.rs index da714c8..7671fc9 100644 --- a/musicxml/src/elements/measure_style.rs +++ b/musicxml/src/elements/measure_style.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [MeasureStyle] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MeasureStyleAttributes { /// Indicates the color of an element. pub color: Option, @@ -27,7 +27,7 @@ pub struct MeasureStyleAttributes { /// Contents of the [MeasureStyle] element. /// /// The [MeasureStyle] element may contain either a [MultipleRest], [MeasureRepeat], [BeatRepeat], or [Slash]. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum MeasureStyleContents { /// The [MultipleRest] element indicates a rest that spans multiple measures. MultipleRest(MultipleRest), @@ -46,7 +46,7 @@ pub enum MeasureStyleContents { /// The [MultipleRest] and [MeasureRepeat] elements indicate the number of measures covered in the element content. /// The [BeatRepeat] and [Slash] elements can cover partial measures. All but the [MultipleRest] element use a `type` attribute to indicate /// starting and stopping the use of the style. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct MeasureStyle { /// Element-specific attributes pub attributes: MeasureStyleAttributes, diff --git a/musicxml/src/elements/membrane.rs b/musicxml/src/elements/membrane.rs index 0ae11ea..c8f6be2 100644 --- a/musicxml/src/elements/membrane.rs +++ b/musicxml/src/elements/membrane.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Membrane] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MembraneAttributes { /// Distinguishes different SMuFL stylistic alternates. pub smufl: Option, @@ -13,7 +13,7 @@ pub struct MembraneAttributes { /// The [Membrane] element represents pictograms for membrane percussion instruments. /// /// ![Membrane](https://hedgetechllc.github.io/musicxml/musicxml/elements/membrane.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Membrane { /// Element-specific attributes pub attributes: MembraneAttributes, diff --git a/musicxml/src/elements/metal.rs b/musicxml/src/elements/metal.rs index 1932e3b..b48fc6a 100644 --- a/musicxml/src/elements/metal.rs +++ b/musicxml/src/elements/metal.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Metal] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MetalAttributes { /// Distinguishes different SMuFL stylistic alternates. pub smufl: Option, @@ -13,7 +13,7 @@ pub struct MetalAttributes { /// The [Metal] element represents pictograms for metal percussion instruments. /// /// ![Metal](https://hedgetechllc.github.io/musicxml/musicxml/elements/metal.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Metal { /// Element-specific attributes pub attributes: MetalAttributes, diff --git a/musicxml/src/elements/metronome.rs b/musicxml/src/elements/metronome.rs index 5381660..0e5970c 100644 --- a/musicxml/src/elements/metronome.rs +++ b/musicxml/src/elements/metronome.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Metronome] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MetronomeAttributes { /// Indicates the color of an element. pub color: Option, @@ -66,7 +66,7 @@ pub struct MetronomeAttributes { } /// The [BeatBasedEquation] element specifies the metronome mark in terms of beat units. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct BeatBasedEquation { /// The [BeatUnit] element specifies the beat unit for the metronome mark. pub beat_unit: BeatUnit, @@ -77,7 +77,7 @@ pub struct BeatBasedEquation { } /// The [BeatEquation] element specifies the metronome mark in terms of beats per minute or beat units. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum BeatEquation { /// The [PerMinute] element specifies the metronome mark in terms of beats per minute. BPM(PerMinute), @@ -86,7 +86,7 @@ pub enum BeatEquation { } /// The [BeatBased] element specifies the metronome mark in terms of beat units. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct BeatBased { /// The [BeatUnit] element specifies the beat unit for the metronome mark. pub beat_unit: BeatUnit, @@ -177,7 +177,7 @@ impl ContentSerializer for BeatBased { } /// The [AdditionalMetronomeBasedContents] element specifies additional metronome marks. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct AdditionalMetronomeBasedContents { /// The [MetronomeRelation] element specifies the relationship between additional metronome marks. pub metronome_relation: MetronomeRelation, @@ -186,7 +186,7 @@ pub struct AdditionalMetronomeBasedContents { } /// The [MetronomeBased] element specifies the metronome mark in terms of beat units. -#[derive(Debug, Default, PartialEq, Eq)] +#[derive(Debug, Default, PartialEq, Eq, Clone)] pub struct MetronomeBased { /// The [MetronomeArrows] element specifies the appearance of arrows in the metronome mark. pub metronome_arrows: Option, @@ -246,7 +246,7 @@ impl ContentSerializer for MetronomeBased { /// Contents of the [Metronome] element. /// /// The [Metronome] element may contain either [BeatBased] or [MetronomeBased] contents. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum MetronomeContents { /// The [BeatBased] element specifies the metronome mark in terms of beat units. BeatBased(BeatBased), @@ -280,7 +280,7 @@ impl ContentSerializer for MetronomeContents { /// such as swing tempo marks where two eighths are equated to a quarter note / eighth note triplet. /// Tied notes can be represented in both types of metronome marks by using the [BeatUnitTied] and [MetronomeTied][super::MetronomeTied] elements. /// The `print_object` attribute is set to "no" in cases where the [Metronome] element represents a relationship or range that is not displayed in the music notation. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Metronome { /// Element-specific attributes pub attributes: MetronomeAttributes, diff --git a/musicxml/src/elements/metronome_arrows.rs b/musicxml/src/elements/metronome_arrows.rs index 04c4153..0a9a9cd 100644 --- a/musicxml/src/elements/metronome_arrows.rs +++ b/musicxml/src/elements/metronome_arrows.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// If the [MetronomeArrows] element is present, it indicates that metric modulation arrows are displayed on both sides of the metronome mark. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("metronome-arrows")] pub struct MetronomeArrows { /// Element-specific attributes diff --git a/musicxml/src/elements/metronome_beam.rs b/musicxml/src/elements/metronome_beam.rs index 03cca5f..13ec311 100644 --- a/musicxml/src/elements/metronome_beam.rs +++ b/musicxml/src/elements/metronome_beam.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [MetronomeBeam] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MetronomeBeamAttributes { /// Indicates eighth note through 1024th note beams using number values 1 thru 8 respectively. The default value is 1. pub number: Option, @@ -14,7 +14,7 @@ pub struct MetronomeBeamAttributes { /// but does not include all the attributes available in the [Beam][super::Beam] element. /// /// ![MetronomeBeam](https://hedgetechllc.github.io/musicxml/musicxml/elements/metronome-beam.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("metronome-beam")] pub struct MetronomeBeam { /// Element-specific attributes diff --git a/musicxml/src/elements/metronome_dot.rs b/musicxml/src/elements/metronome_dot.rs index 80f3e02..42a3017 100644 --- a/musicxml/src/elements/metronome_dot.rs +++ b/musicxml/src/elements/metronome_dot.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [MetronomeDot] element works like the [Dot][super::Dot] element in defining metric relationships. -#[derive(Debug, Default, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("metronome-dot")] pub struct MetronomeDot { /// Element-specific attributes diff --git a/musicxml/src/elements/metronome_note.rs b/musicxml/src/elements/metronome_note.rs index 9b81ed0..ea54fe2 100644 --- a/musicxml/src/elements/metronome_note.rs +++ b/musicxml/src/elements/metronome_note.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [MetronomeNote] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct MetronomeNoteContents { /// The [MetronomeType] element specifies the note type for the metronome mark. pub metronome_type: MetronomeType, @@ -19,7 +19,7 @@ pub struct MetronomeNoteContents { } /// The [MetronomeNote] element defines the appearance of a note within a metric relationship mark. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("metronome-note")] pub struct MetronomeNote { /// Element-specific attributes diff --git a/musicxml/src/elements/metronome_relation.rs b/musicxml/src/elements/metronome_relation.rs index d5b3e38..14edef2 100644 --- a/musicxml/src/elements/metronome_relation.rs +++ b/musicxml/src/elements/metronome_relation.rs @@ -7,7 +7,7 @@ use musicxml_macros::*; /// ![MetronomeRelation](https://hedgetechllc.github.io/musicxml/musicxml/elements/metronome-relation.png) /// /// The currently allowed value is "equals", but this may expand in future versions. If the element is empty, the equals value is used. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("metronome-relation")] pub struct MetronomeRelation { /// Element-specific attributes diff --git a/musicxml/src/elements/metronome_tied.rs b/musicxml/src/elements/metronome_tied.rs index 560d487..16072a4 100644 --- a/musicxml/src/elements/metronome_tied.rs +++ b/musicxml/src/elements/metronome_tied.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [MetronomeTied] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MetronomeTiedAttributes { /// Indicates if this is the start or stop of the tie. pub r#type: StartStop, @@ -14,7 +14,7 @@ pub struct MetronomeTiedAttributes { /// /// As with the [Tied][super::Tied] element, both the start and stop of the tie should be specified, in this case within separate /// [MetronomeNote][super::MetronomeNote] elements. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("metronome-tied")] pub struct MetronomeTied { /// Element-specific attributes diff --git a/musicxml/src/elements/metronome_tuplet.rs b/musicxml/src/elements/metronome_tuplet.rs index a074f2d..c560d22 100644 --- a/musicxml/src/elements/metronome_tuplet.rs +++ b/musicxml/src/elements/metronome_tuplet.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [MetronomeTuplet] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MetronomeTupletAttributes { /// Indicates if this is the start or stop of the tuplet. pub r#type: StartStop, @@ -16,7 +16,7 @@ pub struct MetronomeTupletAttributes { } /// Contents of the [MetronomeTuplet] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct MetronomeTupletContents { /// The [ActualNotes] element specifies the number of notes in the tuplet. pub actual_notes: ActualNotes, @@ -32,7 +32,7 @@ pub struct MetronomeTupletContents { /// along with some attributes from the [Tuplet][super::Tuplet] element. /// /// ![MetronomeTuplet](https://hedgetechllc.github.io/musicxml/musicxml/elements/metronome-tuplet.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("metronome-tuplet")] pub struct MetronomeTuplet { /// Element-specific attributes diff --git a/musicxml/src/elements/metronome_type.rs b/musicxml/src/elements/metronome_type.rs index e548e09..100be29 100644 --- a/musicxml/src/elements/metronome_type.rs +++ b/musicxml/src/elements/metronome_type.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [MetronomeType] element works like the [Type][super::Type] element in defining metric relationships. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("metronome-type")] pub struct MetronomeType { /// Element-specific attributes diff --git a/musicxml/src/elements/mf.rs b/musicxml/src/elements/mf.rs index e3499a6..1d06527 100644 --- a/musicxml/src/elements/mf.rs +++ b/musicxml/src/elements/mf.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Mf] element represents a mezzo forte dynamic marking. /// /// ![mf](https://hedgetechllc.github.io/musicxml/musicxml/elements/mf.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Mf { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/midi_bank.rs b/musicxml/src/elements/midi_bank.rs index c08f401..9d77f30 100644 --- a/musicxml/src/elements/midi_bank.rs +++ b/musicxml/src/elements/midi_bank.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [MidiBank] element specifies a MIDI 1.0 bank number ranging from 1 to 16,384. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("midi-bank")] pub struct MidiBank { /// Element-specific attributes diff --git a/musicxml/src/elements/midi_channel.rs b/musicxml/src/elements/midi_channel.rs index f4a4e59..5c7523f 100644 --- a/musicxml/src/elements/midi_channel.rs +++ b/musicxml/src/elements/midi_channel.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [MidiChannel] element specifies a MIDI 1.0 channel numbers ranging from 1 to 16. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("midi-channel")] pub struct MidiChannel { /// Element-specific attributes diff --git a/musicxml/src/elements/midi_device.rs b/musicxml/src/elements/midi_device.rs index ab606ba..8a89a68 100644 --- a/musicxml/src/elements/midi_device.rs +++ b/musicxml/src/elements/midi_device.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [MidiDevice] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MidiDeviceAttributes { /// Specifies an ID that is unique to the entire document. pub id: Option, @@ -15,7 +15,7 @@ pub struct MidiDeviceAttributes { /// The [MidiDevice] element corresponds to the `DeviceName` meta event in Standard MIDI Files. /// /// Unlike the `DeviceName` meta event, there can be multiple [MidiDevice] elements per MusicXML part. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("midi-device")] pub struct MidiDevice { /// Element-specific attributes diff --git a/musicxml/src/elements/midi_instrument.rs b/musicxml/src/elements/midi_instrument.rs index 5f00e72..96a5d32 100644 --- a/musicxml/src/elements/midi_instrument.rs +++ b/musicxml/src/elements/midi_instrument.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [MidiInstrument] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MidiInstrumentAttributes { /// Specifies an ID that is unique to the entire document. pub id: IdRef, } /// Contents of the [MidiInstrument] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct MidiInstrumentContents { /// The [MidiChannel] element specifies the MIDI 1.0 channel number. pub midi_channel: Option, @@ -36,7 +36,7 @@ pub struct MidiInstrumentContents { /// /// The [MidiInstrument] element can be a part of either the [ScoreInstrument][super::ScoreInstrument] element at the start of a part, /// or the [Sound][super::Sound] element within a part. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("midi-instrument")] pub struct MidiInstrument { /// Element-specific attributes diff --git a/musicxml/src/elements/midi_name.rs b/musicxml/src/elements/midi_name.rs index 07b466c..dcf9dcc 100644 --- a/musicxml/src/elements/midi_name.rs +++ b/musicxml/src/elements/midi_name.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [MidiName] element corresponds to a `ProgramName` meta-event within a Standard MIDI File. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("midi-name")] pub struct MidiName { /// Element-specific attributes diff --git a/musicxml/src/elements/midi_program.rs b/musicxml/src/elements/midi_program.rs index 2e1915d..98d371d 100644 --- a/musicxml/src/elements/midi_program.rs +++ b/musicxml/src/elements/midi_program.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [MidiProgram] element specifies a MIDI 1.0 program number ranging from 1 to 128. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("midi-program")] pub struct MidiProgram { /// Element-specific attributes diff --git a/musicxml/src/elements/midi_unpitched.rs b/musicxml/src/elements/midi_unpitched.rs index 9f49287..95cb5ac 100644 --- a/musicxml/src/elements/midi_unpitched.rs +++ b/musicxml/src/elements/midi_unpitched.rs @@ -7,7 +7,7 @@ use musicxml_macros::*; /// /// It is usually used with MIDI banks for percussion. Note that MIDI 1.0 note numbers are generally specified from 0 to 127 /// rather than the 1 to 128 numbering used in this element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("midi-unpitched")] pub struct MidiUnpitched { /// Element-specific attributes diff --git a/musicxml/src/elements/millimeters.rs b/musicxml/src/elements/millimeters.rs index 77beb21..f0459f3 100644 --- a/musicxml/src/elements/millimeters.rs +++ b/musicxml/src/elements/millimeters.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [Millimeters] element contains the number of millimeters that correspond to the given number of tenths within the [Scaling][super::Scaling] element formula. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Millimeters { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/miscellaneous.rs b/musicxml/src/elements/miscellaneous.rs index 9a0eeb6..b66afd1 100644 --- a/musicxml/src/elements/miscellaneous.rs +++ b/musicxml/src/elements/miscellaneous.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Miscellaneous] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct MiscellaneousContents { /// The [MiscellaneousField] element specifies a part of the metadata. pub miscellaneous_field: Vec, @@ -13,7 +13,7 @@ pub struct MiscellaneousContents { /// If a program has other metadata not yet supported in the MusicXML format, it can go in the [Miscellaneous] element. /// /// The [Miscellaneous] element puts each separate part of metadata into its own [MiscellaneousField] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Miscellaneous { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/miscellaneous_field.rs b/musicxml/src/elements/miscellaneous_field.rs index a928129..84611fa 100644 --- a/musicxml/src/elements/miscellaneous_field.rs +++ b/musicxml/src/elements/miscellaneous_field.rs @@ -4,14 +4,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [MiscellaneousField] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MiscellaneousFieldAttributes { /// Indicates the type of metadata the element content represents. pub name: Token, } /// If a program has other metadata not yet supported in the MusicXML format, each type of metadata can go in a [MiscellaneousField] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("miscellaneous-field")] pub struct MiscellaneousField { /// Element-specific attributes diff --git a/musicxml/src/elements/mode.rs b/musicxml/src/elements/mode.rs index 7afbc08..5ca71ca 100644 --- a/musicxml/src/elements/mode.rs +++ b/musicxml/src/elements/mode.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Mode] element is used to specify major/minor and other mode distinctions. /// /// Valid mode values include major, minor, dorian, phrygian, lydian, mixolydian, aeolian, ionian, locrian, and none. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Mode { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/mordent.rs b/musicxml/src/elements/mordent.rs index f2ac11f..b3d2dc6 100644 --- a/musicxml/src/elements/mordent.rs +++ b/musicxml/src/elements/mordent.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Mordent] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MordentAttributes { /// If yes, the trill accelerates during playback. It is no if not specified. pub accelerate: Option, @@ -67,7 +67,7 @@ pub struct MordentAttributes { /// ![Mordent](https://hedgetechllc.github.io/musicxml/musicxml/elements/mordent.png) /// /// The choice of which mordent sign is inverted differs between MusicXML and the Standard Music Font Layout (SMuFL). -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Mordent { /// Element-specific attributes pub attributes: MordentAttributes, diff --git a/musicxml/src/elements/movement_number.rs b/musicxml/src/elements/movement_number.rs index f17e4c2..15edda0 100644 --- a/musicxml/src/elements/movement_number.rs +++ b/musicxml/src/elements/movement_number.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [MovementNumber] element specifies the number of a movement. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("movement-number")] pub struct MovementNumber { /// Element-specific attributes diff --git a/musicxml/src/elements/movement_title.rs b/musicxml/src/elements/movement_title.rs index 45949ab..07c88cd 100644 --- a/musicxml/src/elements/movement_title.rs +++ b/musicxml/src/elements/movement_title.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [MovementTitle] element specifies the title of a movement, not including its number. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("movement-title")] pub struct MovementTitle { /// Element-specific attributes diff --git a/musicxml/src/elements/mp.rs b/musicxml/src/elements/mp.rs index 1355a46..206439a 100644 --- a/musicxml/src/elements/mp.rs +++ b/musicxml/src/elements/mp.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [Mp] element represents a mezzo piano dynamic marking. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Mp { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/multiple_rest.rs b/musicxml/src/elements/multiple_rest.rs index 8b02ae4..26a3329 100644 --- a/musicxml/src/elements/multiple_rest.rs +++ b/musicxml/src/elements/multiple_rest.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [MultipleRest] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MultipleRestAttributes { /// Specifies whether the multiple rests uses the 1-bar / 2-bar / 4-bar rest symbols, /// or a single shape. It is no if not specified. @@ -16,7 +16,7 @@ pub struct MultipleRestAttributes { /// ![MultipleRest](https://hedgetechllc.github.io/musicxml/musicxml/elements/multiple-rest.png) /// /// The element text indicates the number of measures in the multiple rest. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("multiple-rest")] pub struct MultipleRest { /// Element-specific attributes diff --git a/musicxml/src/elements/music_font.rs b/musicxml/src/elements/music_font.rs index e6fdb1f..0767dec 100644 --- a/musicxml/src/elements/music_font.rs +++ b/musicxml/src/elements/music_font.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [MusicFont] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct MusicFontAttributes { /// A comma-separated list of font names. pub font_family: Option, @@ -17,7 +17,7 @@ pub struct MusicFontAttributes { } /// The [MusicFont] element represents the default values for the music font in the score. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("music-font")] pub struct MusicFont { /// Element-specific attributes diff --git a/musicxml/src/elements/mute.rs b/musicxml/src/elements/mute.rs index 2f3f0b7..bd740d4 100644 --- a/musicxml/src/elements/mute.rs +++ b/musicxml/src/elements/mute.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [Mute] element represents muting playback for different instruments, including brass, winds, and strings. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Mute { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/n.rs b/musicxml/src/elements/n.rs index ca71968..73724a9 100644 --- a/musicxml/src/elements/n.rs +++ b/musicxml/src/elements/n.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [N] element represents a niente dynamic marking. /// /// ![n](https://hedgetechllc.github.io/musicxml/musicxml/elements/n.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct N { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/natural.rs b/musicxml/src/elements/natural.rs index 6e412a0..74d45dd 100644 --- a/musicxml/src/elements/natural.rs +++ b/musicxml/src/elements/natural.rs @@ -7,7 +7,7 @@ use musicxml_macros::*; /// ![Natural](https://hedgetechllc.github.io/musicxml/musicxml/elements/natural.png) /// /// These are usually notated at base pitch rather than sounding pitch. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Natural { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/non_arpeggiate.rs b/musicxml/src/elements/non_arpeggiate.rs index 6980792..1645609 100644 --- a/musicxml/src/elements/non_arpeggiate.rs +++ b/musicxml/src/elements/non_arpeggiate.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [NonArpeggiate] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct NonArpeggiateAttributes { /// Indicates whether this is the top or bottom of the symbol. pub r#type: TopBottom, @@ -40,7 +40,7 @@ pub struct NonArpeggiateAttributes { /// The [NonArpeggiate] element indicates that this [Note][super::Note] is at the top or bottom of a bracket indicating to not arpeggiate these notes. /// /// Since this does not involve playback, it is only used on the top or bottom notes, not on each [Note][super::Note] as for the [Arpeggiate][super::Arpeggiate] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("non-arpeggiate")] pub struct NonArpeggiate { /// Element-specific attributes diff --git a/musicxml/src/elements/normal_dot.rs b/musicxml/src/elements/normal_dot.rs index 2b83f30..47d9fd1 100644 --- a/musicxml/src/elements/normal_dot.rs +++ b/musicxml/src/elements/normal_dot.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [NormalDot] element is used to specify dotted normal tuplet types. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("normal-dot")] pub struct NormalDot { /// Element-specific attributes diff --git a/musicxml/src/elements/normal_notes.rs b/musicxml/src/elements/normal_notes.rs index 76eb4e3..cea30d9 100644 --- a/musicxml/src/elements/normal_notes.rs +++ b/musicxml/src/elements/normal_notes.rs @@ -8,7 +8,7 @@ use musicxml_macros::*; /// If the type associated with the number in the [NormalNotes] element is different than the current note type /// (e.g., a quarter note within an eighth note triplet), then the [NormalNotes] type (e.g. eighth) is specified /// in the [NormalType][super::NormalType] and [NormalDot][super::NormalDot] elements. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("normal-notes")] pub struct NormalNotes { /// Element-specific attributes diff --git a/musicxml/src/elements/normal_type.rs b/musicxml/src/elements/normal_type.rs index 503e866..d48ea10 100644 --- a/musicxml/src/elements/normal_type.rs +++ b/musicxml/src/elements/normal_type.rs @@ -8,7 +8,7 @@ use musicxml_macros::*; /// If the type associated with the number in the [NormalNotes][super::NormalNotes] element is different than the current note type /// (e.g., a quarter note within an eighth note triplet), then the [NormalNotes][super::NormalNotes] type /// (e.g. eighth) is specified in the [NormalType] and [NormalDot][super::NormalDot] elements. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("normal-type")] pub struct NormalType { /// Element-specific attributes diff --git a/musicxml/src/elements/notations.rs b/musicxml/src/elements/notations.rs index e71a10e..5d3cfd1 100644 --- a/musicxml/src/elements/notations.rs +++ b/musicxml/src/elements/notations.rs @@ -8,7 +8,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Notations] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct NotationsAttributes { /// Specifies an ID that is unique to the entire document. pub id: Option, @@ -17,7 +17,7 @@ pub struct NotationsAttributes { } /// The [NotationContentTypes] contains the various notations that can be applied to a note or chord. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum NotationContentTypes { /// The [Tied] element indicates that a tie begins or ends with this note. Tied(Tied), @@ -50,7 +50,7 @@ pub enum NotationContentTypes { } /// Contents of the [Notations] element. -#[derive(Debug, Default, PartialEq, Eq)] +#[derive(Debug, Default, PartialEq, Eq, Clone)] pub struct NotationsContents { /// The [Footnote] element is used to specify editorial information or analysis. pub footnote: Option, @@ -156,7 +156,7 @@ impl ContentSerializer for NotationsContents { /// Multiple [Notations] elements are allowed in order to represent multiple editorial levels. /// The `print_object` attribute allows [Notations] to represent details of performance technique, such as fingerings, /// without having them appear in the score. This element is not related to the concept of XML notations. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Notations { /// Element-specific attributes pub attributes: NotationsAttributes, diff --git a/musicxml/src/elements/note.rs b/musicxml/src/elements/note.rs index e54f408..e72cb1f 100644 --- a/musicxml/src/elements/note.rs +++ b/musicxml/src/elements/note.rs @@ -10,7 +10,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Note] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct NoteAttributes { /// Alters the starting time of the note from when it would otherwise occur based on the flow of durations - /// information that is specific to a performance. It is expressed in terms of divisions, either positive or negative. @@ -79,7 +79,7 @@ pub struct NoteAttributes { } /// The [AudibleType] element contains whether the note is a pitch, unpitched, or rest. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum AudibleType { /// The [Pitch] element contains the pitch of a note. Pitch(Pitch), @@ -90,7 +90,7 @@ pub enum AudibleType { } /// The [GraceNormalInfo] element contains the actual data for a normal grace note. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct GraceNormalInfo { /// The [Chord] element indicates that this note is a chord note. pub chord: Option, @@ -146,7 +146,7 @@ impl ContentSerializer for GraceNormalInfo { } /// The [GraceCueInfo] element contains the actual data for a cue grace note. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub struct GraceCueInfo { /// The [Cue] element indicates that this note is a cue note. pub cue: Cue, @@ -204,7 +204,7 @@ impl ContentSerializer for GraceCueInfo { } /// The [GraceType] element contains the actual data for either a cue grace note or a normal grace note. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum GraceType { /// The [GraceCueInfo] element contains the actual data for a cue grace note. Cue(GraceCueInfo), @@ -213,7 +213,7 @@ pub enum GraceType { } /// The [GraceInfo] element contains the actual data for a grace note. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct GraceInfo { /// The [Grace] element indicates that this note is a grace note. pub grace: Grace, @@ -247,7 +247,7 @@ impl ContentSerializer for GraceInfo { } /// The [CueInfo] element contains the actual data for a cue note. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Copy, Clone)] pub struct CueInfo { /// The [Cue] element indicates that this note is a cue note. pub cue: Cue, @@ -315,7 +315,7 @@ impl ContentSerializer for CueInfo { } /// The [NormalInfo] element contains the actual data for a normal note. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct NormalInfo { /// The [Chord] element indicates that this note is a chord note. pub chord: Option, @@ -381,7 +381,7 @@ impl ContentSerializer for NormalInfo { } /// The [NoteType] element contains the actual data for a note. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum NoteType { /// The [GraceInfo] element contains the actual data for a grace note. Grace(GraceInfo), @@ -392,7 +392,7 @@ pub enum NoteType { } /// Contents of the [Note] element. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct NoteContents { /// The [NoteType] element contains the actual data for the note. pub info: NoteType, @@ -555,7 +555,7 @@ impl ContentSerializer for NoteContents { /// (e.g., [Tie] is used for sound, [Tied][super::Tied] for notation). Thus grace notes do not have a [Duration] element. Cue notes /// have a [Duration] element, as do [Forward][super::Forward] elements, but no [Tie] elements. Having these two types of information /// available can make interchange easier, as some programs handle one type of information more readily than the other. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Note { /// Element-specific attributes pub attributes: NoteAttributes, diff --git a/musicxml/src/elements/note_size.rs b/musicxml/src/elements/note_size.rs index 59ce328..083ffae 100644 --- a/musicxml/src/elements/note_size.rs +++ b/musicxml/src/elements/note_size.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [NoteSize] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct NoteSizeAttributes { /// The type of note size being defined. pub r#type: NoteSizeType, @@ -14,7 +14,7 @@ pub struct NoteSizeAttributes { /// as defined in the [Type][super::Type] element. /// /// A value of 100 would be identical to the size of a regular note as defined by the music font. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("note-size")] pub struct NoteSize { /// Element-specific attributes diff --git a/musicxml/src/elements/notehead.rs b/musicxml/src/elements/notehead.rs index 80fcd4c..e12d946 100644 --- a/musicxml/src/elements/notehead.rs +++ b/musicxml/src/elements/notehead.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Notehead] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct NoteheadAttributes { /// Indicates the color of an element. pub color: Option, @@ -35,7 +35,7 @@ pub struct NoteheadAttributes { /// [Note name noteheads supplement](https://www.w3.org/2021/03/smufl14/tables/note-name-noteheads-supplement.html) ranges /// (U+E150–U+E1AF and U+EEE0–U+EEFF) should not use the `smufl` attribute or the `other` value, but instead use /// the [NoteheadText][super::NoteheadText] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Notehead { /// Element-specific attributes pub attributes: NoteheadAttributes, diff --git a/musicxml/src/elements/notehead_text.rs b/musicxml/src/elements/notehead_text.rs index 56637b6..f99b495 100644 --- a/musicxml/src/elements/notehead_text.rs +++ b/musicxml/src/elements/notehead_text.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [NoteheadText] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct NoteheadTextContents { /// The [DisplayText] element specifies the text that is displayed inside a notehead. pub display_text: Option, @@ -16,7 +16,7 @@ pub struct NoteheadTextContents { /// /// It is not needed for the numbers used in tablature or jianpu notation. The presence of a TAB or jianpu clefs is sufficient to /// indicate that numbers are used. The [DisplayText] and [AccidentalText] elements allow display of fully formatted text and accidentals. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("notehead-text")] pub struct NoteheadText { /// Element-specific attributes diff --git a/musicxml/src/elements/numeral.rs b/musicxml/src/elements/numeral.rs index 96aa1e3..daa50f6 100644 --- a/musicxml/src/elements/numeral.rs +++ b/musicxml/src/elements/numeral.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Numeral] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct NumeralContents { /// The [NumeralRoot] element specifies the root of the Roman numeral or Nashville number. pub numeral_root: NumeralRoot, @@ -17,7 +17,7 @@ pub struct NumeralContents { /// The [Numeral] element represents the Roman numeral or Nashville number part of a harmony. /// /// It requires that the key be specified in the encoding, either with a [Key][super::Key] or [NumeralKey] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Numeral { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/numeral_alter.rs b/musicxml/src/elements/numeral_alter.rs index 8f100a6..ab94e57 100644 --- a/musicxml/src/elements/numeral_alter.rs +++ b/musicxml/src/elements/numeral_alter.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [NumeralAlter] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct NumeralAlterAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct NumeralAlterAttributes { /// The [NumeralAlter] element represents an alteration to the [NumeralRoot][super::NumeralRoot], /// similar to the [Alter][super::Alter] element for a [Pitch][super::Pitch]. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("numeral-alter")] pub struct NumeralAlter { /// Element-specific attributes diff --git a/musicxml/src/elements/numeral_fifths.rs b/musicxml/src/elements/numeral_fifths.rs index c194862..aa5ee13 100644 --- a/musicxml/src/elements/numeral_fifths.rs +++ b/musicxml/src/elements/numeral_fifths.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [NumeralFifths] element specifies the key in the same way as the [Fifths] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("numeral-fifths")] pub struct NumeralFifths { /// Element-specific attributes diff --git a/musicxml/src/elements/numeral_key.rs b/musicxml/src/elements/numeral_key.rs index 607e09a..a32064c 100644 --- a/musicxml/src/elements/numeral_key.rs +++ b/musicxml/src/elements/numeral_key.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [NumeralKey] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct NumeralKeyAttributes { /// Specifies whether or not to print an object. It is yes if not specified. pub print_object: Option, } /// Contents of the [NumeralKey] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct NumeralKeyContents { /// The [NumeralFifths] element specifies the number of fifths in the key signature of the numeral. pub numeral_fifths: NumeralFifths, @@ -21,7 +21,7 @@ pub struct NumeralKeyContents { } /// The [NumeralKey] element is used when the key for the numeral is different than the key specified by the key signature. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("numeral-key")] pub struct NumeralKey { /// Element-specific attributes diff --git a/musicxml/src/elements/numeral_mode.rs b/musicxml/src/elements/numeral_mode.rs index 5c270a7..4f340dd 100644 --- a/musicxml/src/elements/numeral_mode.rs +++ b/musicxml/src/elements/numeral_mode.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [NumeralMode] specifies the scale that is used to interpret the [NumeralRoot][super::NumeralRoot] element values. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("numeral-mode")] pub struct NumeralMode { /// Element-specific attributes diff --git a/musicxml/src/elements/numeral_root.rs b/musicxml/src/elements/numeral_root.rs index bfe5283..efe571d 100644 --- a/musicxml/src/elements/numeral_root.rs +++ b/musicxml/src/elements/numeral_root.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [NumeralRoot] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct NumeralRootAttributes { /// Indicates the color of an element. pub color: Option, @@ -41,7 +41,7 @@ pub struct NumeralRootAttributes { } /// The [NumeralRoot] element represents the Roman numeral or Nashville number as a positive integer from 1 to 7. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("numeral-root")] pub struct NumeralRoot { /// Element-specific attributes diff --git a/musicxml/src/elements/octave.rs b/musicxml/src/elements/octave.rs index 368cac4..a4087b5 100644 --- a/musicxml/src/elements/octave.rs +++ b/musicxml/src/elements/octave.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Octaves are represented by the numbers 0 to 9, where 4 indicates the octave started by middle C. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Octave { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/octave_change.rs b/musicxml/src/elements/octave_change.rs index c661a4b..ff703a0 100644 --- a/musicxml/src/elements/octave_change.rs +++ b/musicxml/src/elements/octave_change.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// /// The [OctaveChange] element should be included when using transposition intervals of an octave or more, /// and should not be present for intervals of less than an octave. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("octave-change")] pub struct OctaveChange { /// Element-specific attributes diff --git a/musicxml/src/elements/octave_shift.rs b/musicxml/src/elements/octave_shift.rs index a583ae8..fff4ff9 100644 --- a/musicxml/src/elements/octave_shift.rs +++ b/musicxml/src/elements/octave_shift.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OctaveShift] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OctaveShiftAttributes { /// Indicates if this is the start, stop, or continuation of the octave shift. /// The start is specified as a shift up or down from their performed values. @@ -79,7 +79,7 @@ impl Default for OctaveShiftAttributes { /// ![OctaveShift](https://hedgetechllc.github.io/musicxml/musicxml/elements/octave-shift.png) /// /// A treble clef line noted with 8va will be indicated with an [OctaveShift] down from the pitch data indicated in the notes. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("octave-shift")] pub struct OctaveShift { /// Element-specific attributes diff --git a/musicxml/src/elements/offset.rs b/musicxml/src/elements/offset.rs index ca34164..5eee09e 100644 --- a/musicxml/src/elements/offset.rs +++ b/musicxml/src/elements/offset.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Offset] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OffsetAttributes { /// The offset affects the visual appearance of the direction. If the `sound` attribute is yes, /// then the offset affects playback and listening too. If it is no, then any [Sound][super::Sound] or @@ -17,7 +17,7 @@ pub struct OffsetAttributes { /// /// The current musical location is always within the current measure, even at the end of a measure. If an element within a [Direction][super::Direction] /// includes a `default_x` attribute, the [Offset] value will be ignored when determining the appearance of that element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Offset { /// Element-specific attributes pub attributes: OffsetAttributes, diff --git a/musicxml/src/elements/open.rs b/musicxml/src/elements/open.rs index 455e87e..38d214e 100644 --- a/musicxml/src/elements/open.rs +++ b/musicxml/src/elements/open.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Open] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OpenAttributes { /// Indicates the color of an element. pub color: Option, @@ -46,7 +46,7 @@ pub struct OpenAttributes { /// /// The `smufl` attribute can be used to distinguish different Standard Music Font Layout (SMuFL) glyphs that have a similar appearance /// such as "brassMuteOpen" and "guitarOpenPedal". If not present, the default glyph is "brassMuteOpen". -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Open { /// Element-specific attributes pub attributes: OpenAttributes, diff --git a/musicxml/src/elements/open_string.rs b/musicxml/src/elements/open_string.rs index 3598b72..f6796a6 100644 --- a/musicxml/src/elements/open_string.rs +++ b/musicxml/src/elements/open_string.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OpenString] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OpenStringAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct OpenStringAttributes { /// The [OpenString] element represents the zero-shaped open string symbol. /// /// ![OpenString](https://hedgetechllc.github.io/musicxml/musicxml/elements/open-string.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("open-string")] pub struct OpenString { /// Element-specific attributes diff --git a/musicxml/src/elements/opus.rs b/musicxml/src/elements/opus.rs index f8c9361..ab5c86a 100644 --- a/musicxml/src/elements/opus.rs +++ b/musicxml/src/elements/opus.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Opus] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OpusAttributes { /// The `xlink_href` attribute provides the data that allows an application to find a remote resource or resource fragment. /// See the definition in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#link-locators). @@ -27,7 +27,7 @@ pub struct OpusAttributes { } /// The [Opus] element represents a link to a MusicXML opus document that composes multiple MusicXML scores into a collection. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Opus { /// Element-specific attributes pub attributes: OpusAttributes, diff --git a/musicxml/src/elements/ornaments.rs b/musicxml/src/elements/ornaments.rs index 8ebd065..f234a89 100644 --- a/musicxml/src/elements/ornaments.rs +++ b/musicxml/src/elements/ornaments.rs @@ -8,14 +8,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Ornaments] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OrnamentsAttributes { /// Specifies an ID that is unique to the entire document. pub id: Option, } /// The [OrnamentType] element specifies the ornaments available to be performed. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub enum OrnamentType { /// The [TrillMark] element represents the trill-mark symbol. #[rename("trill-mark")] @@ -59,7 +59,7 @@ pub enum OrnamentType { } /// Contents of the [Ornaments] element. -#[derive(Debug, Default, PartialEq, Eq, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentSerialize)] pub struct OrnamentContents { /// The [OrnamentType] elements specify the ornaments to be performed. pub ornaments: Vec, @@ -92,7 +92,7 @@ impl ContentDeserializer for OrnamentContents { /// /// The [AccidentalMark] element's content is represented the same as an [Accidental][super::Accidental] element, but with a different /// name to reflect the different musical meaning. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Ornaments { /// Element-specific attributes pub attributes: OrnamentsAttributes, diff --git a/musicxml/src/elements/other_appearance.rs b/musicxml/src/elements/other_appearance.rs index e88e43a..1285e97 100644 --- a/musicxml/src/elements/other_appearance.rs +++ b/musicxml/src/elements/other_appearance.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OtherAppearance] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OtherAppearanceAttributes { /// The appearance type being specified. pub r#type: Token, @@ -13,7 +13,7 @@ pub struct OtherAppearanceAttributes { /// The [OtherAppearance] element is used to define any graphical settings not yet in the current version of the MusicXML format. /// /// This allows extended representation, though without application interoperability. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("other-appearance")] pub struct OtherAppearance { /// Element-specific attributes diff --git a/musicxml/src/elements/other_articulation.rs b/musicxml/src/elements/other_articulation.rs index 224e410..9c5afc8 100644 --- a/musicxml/src/elements/other_articulation.rs +++ b/musicxml/src/elements/other_articulation.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OtherArticulation] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OtherArticulationAttributes { /// Indicates the color of an element. pub color: Option, @@ -47,7 +47,7 @@ pub struct OtherArticulationAttributes { /// The `smufl` attribute can be used to specify a particular articulation, allowing application interoperability without requiring every /// Standard Music Font Layout (SMuFL) articulation to have a MusicXML element equivalent. Using the [OtherArticulation] element without the `smufl` /// attribute allows for extended representation, though without application interoperability. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("other-articulation")] pub struct OtherArticulation { /// Element-specific attributes diff --git a/musicxml/src/elements/other_direction.rs b/musicxml/src/elements/other_direction.rs index 4e04d71..b646fbd 100644 --- a/musicxml/src/elements/other_direction.rs +++ b/musicxml/src/elements/other_direction.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OtherDirection] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OtherDirectionAttributes { /// Indicates the color of an element. pub color: Option, @@ -66,7 +66,7 @@ pub struct OtherDirectionAttributes { /// The `smufl` attribute can be used to specify a particular direction symbol, allowing application interoperability without requiring every /// SMuFL glyph to have a MusicXML element equivalent. Using the [OtherDirection] element without the `smufl` attribute allows for extended representation, /// though without application interoperability. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("other-direction")] pub struct OtherDirection { /// Element-specific attributes diff --git a/musicxml/src/elements/other_dynamics.rs b/musicxml/src/elements/other_dynamics.rs index 08f4338..0592d14 100644 --- a/musicxml/src/elements/other_dynamics.rs +++ b/musicxml/src/elements/other_dynamics.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OtherDynamics] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OtherDynamicsAttributes { /// Indicates a particular Standard Music Font Layout (SMuFL) character using its canonical glyph name. /// Sometimes this is a formatting choice, and sometimes this is a refinement of the semantic meaning of an element. @@ -12,7 +12,7 @@ pub struct OtherDynamicsAttributes { } /// The [OtherDynamics] element allows other dynamic marks that are not covered by combinations of the individual [Dynamics][super::Dynamics] child elements. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("other-dynamics")] pub struct OtherDynamics { /// Element-specific attributes diff --git a/musicxml/src/elements/other_listen.rs b/musicxml/src/elements/other_listen.rs index c933720..26f11e9 100644 --- a/musicxml/src/elements/other_listen.rs +++ b/musicxml/src/elements/other_listen.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OtherListen] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OtherListenAttributes { /// Indicates the type of listening to which the element content applies. pub r#type: Token, @@ -16,7 +16,7 @@ pub struct OtherListenAttributes { } /// The [OtherListen] element represents other types of listening control and interaction that are specific to a note. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("other-listen")] pub struct OtherListen { /// Element-specific attributes diff --git a/musicxml/src/elements/other_listening.rs b/musicxml/src/elements/other_listening.rs index 0594991..bdce33d 100644 --- a/musicxml/src/elements/other_listening.rs +++ b/musicxml/src/elements/other_listening.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OtherListening] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OtherListeningAttributes { /// Indicates the type of listening to which the element content applies. pub r#type: Token, @@ -17,7 +17,7 @@ pub struct OtherListeningAttributes { /// The [OtherListening] element represents other types of listening control and interaction that change the state of the /// listening application from the specified point in the performance onward. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("other-listening")] pub struct OtherListening { /// Element-specific attributes diff --git a/musicxml/src/elements/other_notation.rs b/musicxml/src/elements/other_notation.rs index f224855..1e425a3 100644 --- a/musicxml/src/elements/other_notation.rs +++ b/musicxml/src/elements/other_notation.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OtherNotation] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OtherNotationAttributes { /// Indicates if this is a single-note notation, or the start or stop of a multi-note notation. pub r#type: StartStopSingle, @@ -61,7 +61,7 @@ pub struct OtherNotationAttributes { /// The `smufl` attribute can be used to specify a particular notation, allowing application interoperability without requiring every /// Standard Music Font Layout (SMuFL) glyph to have a MusicXML element equivalent. Using the [OtherNotation] element without the `smufl` attribute /// allows for extended representation, though without application interoperability. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("other-notation")] pub struct OtherNotation { /// Element-specific attributes diff --git a/musicxml/src/elements/other_ornament.rs b/musicxml/src/elements/other_ornament.rs index 60d31c4..d0ae34b 100644 --- a/musicxml/src/elements/other_ornament.rs +++ b/musicxml/src/elements/other_ornament.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OtherOrnament] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OtherOrnamentAttributes { /// Indicates the color of an element. pub color: Option, @@ -47,7 +47,7 @@ pub struct OtherOrnamentAttributes { /// The `smufl` attribute can be used to specify a particular ornament, allowing application interoperability without requiring every /// Standard Music Font Layout (SMuFL) ornament to have a MusicXML element equivalent. Using the [OtherOrnament] element without the `smufl` attribute /// allows for extended representation, though without application interoperability. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("other-ornament")] pub struct OtherOrnament { /// Element-specific attributes diff --git a/musicxml/src/elements/other_percussion.rs b/musicxml/src/elements/other_percussion.rs index 015e930..0fb1035 100644 --- a/musicxml/src/elements/other_percussion.rs +++ b/musicxml/src/elements/other_percussion.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OtherPercussion] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OtherPercussionAttributes { /// Indicates a particular Standard Music Font Layout (SMuFL) character using its canonical glyph name. /// Sometimes this is a formatting choice, and sometimes this is a refinement of the semantic meaning of an element. @@ -12,7 +12,7 @@ pub struct OtherPercussionAttributes { } /// The [OtherPercussion] element represents percussion pictograms not defined elsewhere. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("other-percussion")] pub struct OtherPercussion { /// Element-specific attributes diff --git a/musicxml/src/elements/other_play.rs b/musicxml/src/elements/other_play.rs index c4164f9..1b8602b 100644 --- a/musicxml/src/elements/other_play.rs +++ b/musicxml/src/elements/other_play.rs @@ -4,14 +4,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OtherPlay] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OtherPlayAttributes { /// Indicates the type of playback to which the element content applies. pub r#type: Token, } /// The [OtherPlay] element represents other types of playback not otherwise specified within the [Play][super::Play] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("other-play")] pub struct OtherPlay { /// Element-specific attributes diff --git a/musicxml/src/elements/other_technical.rs b/musicxml/src/elements/other_technical.rs index 56d1212..1d364a0 100644 --- a/musicxml/src/elements/other_technical.rs +++ b/musicxml/src/elements/other_technical.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [OtherTechnical] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct OtherTechnicalAttributes { /// Indicates the color of an element. pub color: Option, @@ -47,7 +47,7 @@ pub struct OtherTechnicalAttributes { /// The `smufl` attribute can be used to specify a particular glyph, allowing application interoperability without requiring every /// Standard Music Font Layout (SMuFL) technical indication to have a MusicXML element equivalent. Using the [OtherTechnical] element /// without the `smufl` attribute allows for extended representation, though without application interoperability. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("other-technical")] pub struct OtherTechnical { /// Element-specific attributes diff --git a/musicxml/src/elements/p.rs b/musicxml/src/elements/p.rs index 054f2e0..17212cd 100644 --- a/musicxml/src/elements/p.rs +++ b/musicxml/src/elements/p.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [P] element represents a piano dynamic marking. /// /// ![p](https://hedgetechllc.github.io/musicxml/musicxml/elements/p.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct P { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/page_height.rs b/musicxml/src/elements/page_height.rs index 2617ca2..7f4b6a5 100644 --- a/musicxml/src/elements/page_height.rs +++ b/musicxml/src/elements/page_height.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [PageHeight] element specifies the page height in tenths. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("page-height")] pub struct PageHeight { /// Element-specific attributes diff --git a/musicxml/src/elements/page_layout.rs b/musicxml/src/elements/page_layout.rs index ddf5e62..2692ae0 100644 --- a/musicxml/src/elements/page_layout.rs +++ b/musicxml/src/elements/page_layout.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [PageLayout] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct PageLayoutContents { /// The [PageHeight] element specifies the height of the page. pub page_height: Option, @@ -22,7 +22,7 @@ pub struct PageLayoutContents { /// All other pages use the default values as determined by the [Defaults][super::Defaults] element. If any child elements are missing /// from the [PageLayout] element in a [Print][super::Print] element, the values determined by the [Defaults][super::Defaults] element /// are used there as well. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("page-layout")] pub struct PageLayout { /// Element-specific attributes diff --git a/musicxml/src/elements/page_margins.rs b/musicxml/src/elements/page_margins.rs index 204d228..5f5a689 100644 --- a/musicxml/src/elements/page_margins.rs +++ b/musicxml/src/elements/page_margins.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [PageMargins] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PageMarginsAttributes { /// Specifies whether the margins apply to even pages, odd pages, or both. /// This attribute is not needed when used as part of a [Print][super::Print] element. @@ -14,7 +14,7 @@ pub struct PageMarginsAttributes { } /// Contents of the [PageMargins] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct PageMarginsContents { /// The [LeftMargin] element specifies the left margin in tenths. pub left_margin: LeftMargin, @@ -27,7 +27,7 @@ pub struct PageMarginsContents { } /// The [PageMargins] element specifies page margins in tenths either for both even and odd pages, or via separate odd and even page number values. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("page-margins")] pub struct PageMargins { /// Element-specific attributes diff --git a/musicxml/src/elements/page_width.rs b/musicxml/src/elements/page_width.rs index 4a31eb6..1e185ab 100644 --- a/musicxml/src/elements/page_width.rs +++ b/musicxml/src/elements/page_width.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [PageWidth] element specifies the page width in tenths. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("page-width")] pub struct PageWidth { /// Element-specific attributes diff --git a/musicxml/src/elements/pan.rs b/musicxml/src/elements/pan.rs index 09f4f59..fe6f255 100644 --- a/musicxml/src/elements/pan.rs +++ b/musicxml/src/elements/pan.rs @@ -7,7 +7,7 @@ use musicxml_macros::*; /// /// Both are expressed in degrees ranging from -180 to 180. For [Pan], 0 is straight ahead, -90 is hard left, 90 is hard right, /// and -180 and 180 are directly behind the listener. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Pan { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/part.rs b/musicxml/src/elements/part.rs index e58fd49..bb34683 100644 --- a/musicxml/src/elements/part.rs +++ b/musicxml/src/elements/part.rs @@ -8,14 +8,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Part] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PartAttributes { /// Specifies an ID that is unique to the entire document. pub id: IdRef, } /// The [PartElement] specifies all possible elements available for use in a [Part] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub enum PartElement { /// The [Measure] element includes the basic musical data containers within a document. Measure(Measure), @@ -51,7 +51,7 @@ pub enum PartElement { } /// The [Part] element includes the basic musical data such as [Notes][super::Note] or [Measures][Measure] within a document. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Part { /// Element-specific attributes pub attributes: PartAttributes, diff --git a/musicxml/src/elements/part_abbreviation.rs b/musicxml/src/elements/part_abbreviation.rs index 7315d56..1605f64 100644 --- a/musicxml/src/elements/part_abbreviation.rs +++ b/musicxml/src/elements/part_abbreviation.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [PartAbbreviation] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PartAbbreviationAttributes { /// Indicates the color of an element. pub color: Option, @@ -46,7 +46,7 @@ pub struct PartAbbreviationAttributes { /// The [PartName][super::PartName] and [PartAbbreviation] elements describe the name and abbreviation of a [ScorePart][super::ScorePart] element, respectively. /// Formatting attributes for these elements were deprecated in Version 2.0 in favor of the [PartNameDisplay][super::PartNameDisplay] and /// [PartAbbreviationDisplay][super::PartAbbreviationDisplay] elements. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("part-abbreviation")] pub struct PartAbbreviation { /// Element-specific attributes diff --git a/musicxml/src/elements/part_abbreviation_display.rs b/musicxml/src/elements/part_abbreviation_display.rs index 83c9172..1714b7c 100644 --- a/musicxml/src/elements/part_abbreviation_display.rs +++ b/musicxml/src/elements/part_abbreviation_display.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [PartAbbreviationDisplay] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PartAbbreviationDisplayAttributes { /// Specifies whether or not to print an object. It is yes if not specified. pub print_object: Option, } /// Contents of the [PartAbbreviationDisplay] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct PartAbbreviationDisplayContents { /// The [DisplayText] element specifies the text to display for the part abbreviation. pub display_text: Option, @@ -26,7 +26,7 @@ pub struct PartAbbreviationDisplayContents { /// /// Formatting specified in the [PartAbbreviationDisplay] element overrides formatting specified in the /// [PartAbbreviation][super::PartAbbreviation] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("part-abbreviation-display")] pub struct PartAbbreviationDisplay { /// Element-specific attributes diff --git a/musicxml/src/elements/part_clef.rs b/musicxml/src/elements/part_clef.rs index 5a575e1..f6b66e3 100644 --- a/musicxml/src/elements/part_clef.rs +++ b/musicxml/src/elements/part_clef.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [PartClef] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct PartClefContents { /// The [Sign] element represents the clef symbol. pub sign: Sign, @@ -18,7 +18,7 @@ pub struct PartClefContents { /// /// The child elements of the [PartClef] element have the same meaning as for the [Clef][super::Clef] element. However that meaning applies /// to a transposed part created from the existing score file. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("part-clef")] pub struct PartClef { /// Element-specific attributes diff --git a/musicxml/src/elements/part_group.rs b/musicxml/src/elements/part_group.rs index 043a331..30587fb 100644 --- a/musicxml/src/elements/part_group.rs +++ b/musicxml/src/elements/part_group.rs @@ -8,7 +8,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [PartGroup] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PartGroupAttributes { /// Indicates the start or stop of the [PartGroup]. pub r#type: StartStop, @@ -18,7 +18,7 @@ pub struct PartGroupAttributes { } /// Contents of the [PartGroup] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct PartGroupContents { /// The [GroupName] element specifies the name of the group. pub group_name: Option, @@ -50,7 +50,7 @@ pub struct PartGroupContents { /// A [PartGroup] element is not needed for a single multi-staff part. By default, multi-staff parts include a brace symbol and /// (if appropriate given the [BarStyle][super::BarStyle]) common barlines. The symbol formatting for a multi-staff part can be more fully specified /// using the [PartSymbol][super::PartSymbol] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("part-group")] pub struct PartGroup { /// Element-specific attributes diff --git a/musicxml/src/elements/part_link.rs b/musicxml/src/elements/part_link.rs index 12ccdb9..4c5f148 100644 --- a/musicxml/src/elements/part_link.rs +++ b/musicxml/src/elements/part_link.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [PartLink] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PartLinkAttributes { /// The `xlink_href` attribute provides the data that allows an application to find a remote resource or resource fragment. See the definition /// in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#link-locators). @@ -28,7 +28,7 @@ pub struct PartLinkAttributes { } /// Contents of the [PartLink] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct PartLinkContents { /// The [InstrumentLink] element allows MusicXML data for a single instrument to be defined within a part. pub instrument_link: Vec, @@ -40,7 +40,7 @@ pub struct PartLinkContents { /// /// It links a [ScorePart][super::ScorePart] from a score document to MusicXML documents that contain parts data. In the case of a single /// compressed MusicXML file, the link href values are paths that are relative to the root folder of the zip file. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("part-link")] pub struct PartLink { /// Element-specific attributes diff --git a/musicxml/src/elements/part_list.rs b/musicxml/src/elements/part_list.rs index 0af94d8..72048dd 100644 --- a/musicxml/src/elements/part_list.rs +++ b/musicxml/src/elements/part_list.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [PartListElement] specifies all possible elements available for use in a [PartList] element. #[allow(clippy::large_enum_variant)] -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum PartListElement { /// The [PartGroup] element indicates a group of parts that is bracketed together. PartGroup(PartGroup), @@ -14,7 +14,7 @@ pub enum PartListElement { } /// Contents of the [PartList] element. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct PartListContents { /// Ordered list of [PartList] content elements. pub content: Vec, @@ -60,7 +60,7 @@ impl ContentSerializer for PartListContents { /// /// There must be at least one [ScorePart], combined as desired with [PartGroup] elements that indicate braces and brackets. Parts are ordered from /// top to bottom in a score based on the order in which they appear in the [PartList]. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("part-list")] pub struct PartList { /// Element-specific attributes diff --git a/musicxml/src/elements/part_name.rs b/musicxml/src/elements/part_name.rs index 77f11ee..fc483c7 100644 --- a/musicxml/src/elements/part_name.rs +++ b/musicxml/src/elements/part_name.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [PartName] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PartNameAttributes { /// Indicates the color of an element. pub color: Option, @@ -47,7 +47,7 @@ pub struct PartNameAttributes { /// /// Formatting attributes for these elements were deprecated in Version 2.0 in favor of the [PartNameDisplay][super::PartNameDisplay] and /// [PartAbbreviationDisplay][super::PartAbbreviationDisplay] elements. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("part-name")] pub struct PartName { /// Element-specific attributes diff --git a/musicxml/src/elements/part_name_display.rs b/musicxml/src/elements/part_name_display.rs index af2702a..87c1c0e 100644 --- a/musicxml/src/elements/part_name_display.rs +++ b/musicxml/src/elements/part_name_display.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [PartNameDisplay] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PartNameDisplayAttributes { /// Specifies whether or not to print an object. It is yes if not specified. pub print_object: Option, } /// Contents of the [PartNameDisplay] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct PartNameDisplayContents { /// The [DisplayText] element specifies the text to display for the part name. pub display_text: Option, @@ -25,7 +25,7 @@ pub struct PartNameDisplayContents { /// The `print_object` attribute can be used to determine what, if anything, is printed at the start of each system. /// /// Formatting specified in the [PartNameDisplay] element overrides formatting specified in the [PartName][super::PartName] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("part-name-display")] pub struct PartNameDisplay { /// Element-specific attributes diff --git a/musicxml/src/elements/part_symbol.rs b/musicxml/src/elements/part_symbol.rs index d2e6f83..221a3b8 100644 --- a/musicxml/src/elements/part_symbol.rs +++ b/musicxml/src/elements/part_symbol.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [PartSymbol] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PartSymbolAttributes { /// Specifies the bottom staff of the symbol when it does not extend across the entire part. pub bottom_staff: Option, @@ -41,7 +41,7 @@ pub struct PartSymbolAttributes { /// part, the `top_staff` will typically be 1 for the right hand, while the `bottom_staff` will typically be 2 for the left hand. Staff 3 for the pedals /// is usually outside the brace. By default, the presence of a [PartSymbol] element that does not extend across the entire part also indicates a corresponding /// change in the common barlines within a part. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("part-symbol")] pub struct PartSymbol { /// Element-specific attributes diff --git a/musicxml/src/elements/part_transpose.rs b/musicxml/src/elements/part_transpose.rs index da2ba05..dc8ca2a 100644 --- a/musicxml/src/elements/part_transpose.rs +++ b/musicxml/src/elements/part_transpose.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [PartTranspose] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct PartTransposeContents { /// The [Diatonic] element specifies the number of diatonic steps up or down from the written key signature. pub diatonic: Option, @@ -22,7 +22,7 @@ pub struct PartTransposeContents { /// /// The [Chromatic] element in a [PartTranspose] element will usually have a non-zero value, since octave transpositions can be represented in concert /// scores using the [Transpose][super::Transpose] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("part-transpose")] pub struct PartTranspose { /// Element-specific attributes diff --git a/musicxml/src/elements/pedal.rs b/musicxml/src/elements/pedal.rs index 342ecd0..2632091 100644 --- a/musicxml/src/elements/pedal.rs +++ b/musicxml/src/elements/pedal.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Pedal] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PedalAttributes { /// Distinguishes different types of pedal directions. pub r#type: PedalType, @@ -57,7 +57,7 @@ pub struct PedalAttributes { /// /// The soft pedal is not included here because there is no special symbol or graphic used for it beyond what can be specified /// with [Words][super::Words] and [Bracket][super::Bracket] elements. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Pedal { /// Element-specific attributes pub attributes: PedalAttributes, diff --git a/musicxml/src/elements/pedal_alter.rs b/musicxml/src/elements/pedal_alter.rs index 78d20b0..5a659fc 100644 --- a/musicxml/src/elements/pedal_alter.rs +++ b/musicxml/src/elements/pedal_alter.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [PedalAlter] element defines the chromatic alteration for a single harp pedal. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("pedal-alter")] pub struct PedalAlter { /// Element-specific attributes diff --git a/musicxml/src/elements/pedal_step.rs b/musicxml/src/elements/pedal_step.rs index acf68f4..6fb3b42 100644 --- a/musicxml/src/elements/pedal_step.rs +++ b/musicxml/src/elements/pedal_step.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [PedalStep] element defines the pitch step for a single harp pedal. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("pedal-step")] pub struct PedalStep { /// Element-specific attributes diff --git a/musicxml/src/elements/pedal_tuning.rs b/musicxml/src/elements/pedal_tuning.rs index d1d6231..8820149 100644 --- a/musicxml/src/elements/pedal_tuning.rs +++ b/musicxml/src/elements/pedal_tuning.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [PedalTuning] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct PedalTuningContents { /// The [PedalStep] element specifies the step of the tuning. pub pedal_step: PedalStep, @@ -13,7 +13,7 @@ pub struct PedalTuningContents { } /// The [PedalTuning] element specifies the tuning of a single harp pedal. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("pedal-tuning")] pub struct PedalTuning { /// Element-specific attributes diff --git a/musicxml/src/elements/per_minute.rs b/musicxml/src/elements/per_minute.rs index aee94e3..2f460cf 100644 --- a/musicxml/src/elements/per_minute.rs +++ b/musicxml/src/elements/per_minute.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [PerMinute] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PerMinuteAttributes { /// A comma-separated list of font names. pub font_family: Option, @@ -21,7 +21,7 @@ pub struct PerMinuteAttributes { /// If a font is specified, it overrides the font specified for the overall [Metronome][super::Metronome] element. /// This allows separate specification of a music font for the [BeatUnit][super::BeatUnit] and a text font for the numeric value, /// in cases where a single metronome font is not used. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("per-minute")] pub struct PerMinute { /// Element-specific attributes diff --git a/musicxml/src/elements/percussion.rs b/musicxml/src/elements/percussion.rs index 776f39e..142b31a 100644 --- a/musicxml/src/elements/percussion.rs +++ b/musicxml/src/elements/percussion.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Percussion] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PercussionAttributes { /// Indicates the color of an element. pub color: Option, @@ -60,7 +60,7 @@ pub struct PercussionAttributes { } /// The [PercussionContents] element specifies all possible options for use in a [Percussion] element. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum PercussionContents { /// The [Glass] element is used to define glass pictogram symbols. Glass(Glass), @@ -92,7 +92,7 @@ pub enum PercussionContents { /// /// The organization of these symbols follows the definitions in Kurt Stone's "Music Notation in the Twentieth Century" on pages 206-212 and 223. /// More pictograms have been added to the ones listed in Stone, based on how usage has evolved since the book was published in 1980. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct Percussion { /// Element-specific attributes pub attributes: PercussionAttributes, diff --git a/musicxml/src/elements/pf.rs b/musicxml/src/elements/pf.rs index bc6fc31..8395094 100644 --- a/musicxml/src/elements/pf.rs +++ b/musicxml/src/elements/pf.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Pf] element represents a piano forte dynamic marking. /// /// ![pf](https://hedgetechllc.github.io/musicxml/musicxml/elements/pf.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Pf { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/pitch.rs b/musicxml/src/elements/pitch.rs index 15c11c7..b997b83 100644 --- a/musicxml/src/elements/pitch.rs +++ b/musicxml/src/elements/pitch.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Pitch] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct PitchContents { /// The [Step] element represents the step of the diatonic scale. pub step: Step, @@ -15,7 +15,7 @@ pub struct PitchContents { } /// [Pitch] is represented as a combination of the step of the diatonic scale, the chromatic alteration, and the octave. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Pitch { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/pitched.rs b/musicxml/src/elements/pitched.rs index 501e1cf..0dbc643 100644 --- a/musicxml/src/elements/pitched.rs +++ b/musicxml/src/elements/pitched.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Pitched] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PitchedAttributes { /// Distinguishes different SMuFL glyphs for a particular pictogram within the Tuned mallet percussion pictograms range. pub smufl: Option, @@ -13,7 +13,7 @@ pub struct PitchedAttributes { /// The [Pitched] element represents pictograms for pitched percussion instruments. /// /// ![Pitched](https://hedgetechllc.github.io/musicxml/musicxml/elements/pitched.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Pitched { /// Element-specific attributes pub attributes: PitchedAttributes, diff --git a/musicxml/src/elements/play.rs b/musicxml/src/elements/play.rs index b369127..14c69e9 100644 --- a/musicxml/src/elements/play.rs +++ b/musicxml/src/elements/play.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Play] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PlayAttributes { /// Specifies an ID that is unique to the entire document. pub id: Option, } /// Contents of the [Play] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct PlayContents { /// The [Ipa] element specifies International Phonetic Alphabet symbols for vocal music. pub ipa: Option, @@ -28,7 +28,7 @@ pub struct PlayContents { /// /// When used as part of a [Sound][super::Sound] element, it applies to all notes going forward in score order. In multi-instrument parts, /// the affected instrument should be specified using the id attribute. When used as part of a [Note][super::Note] element, it applies to the current note only. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Play { /// Element-specific attributes pub attributes: PlayAttributes, diff --git a/musicxml/src/elements/player.rs b/musicxml/src/elements/player.rs index ef0842f..2f7b0c3 100644 --- a/musicxml/src/elements/player.rs +++ b/musicxml/src/elements/player.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Player] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PlayerAttributes { /// Specifies an ID that is unique to the entire document. pub id: Id, } /// Contents of the [Player] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct PlayerContents { /// The [PlayerName] element specifies the name of the player. pub player_name: PlayerName, @@ -21,7 +21,7 @@ pub struct PlayerContents { /// The [Player] element allows for multiple players per [ScorePart][super::ScorePart] for use in listening applications. /// /// One player may play multiple instruments, while a single instrument may include multiple players in divisi sections. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Player { /// Element-specific attributes pub attributes: PlayerAttributes, diff --git a/musicxml/src/elements/player_name.rs b/musicxml/src/elements/player_name.rs index 3852e26..16bd21c 100644 --- a/musicxml/src/elements/player_name.rs +++ b/musicxml/src/elements/player_name.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [PlayerName] element is typically used within a software application, rather than appearing on the printed page of a score. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("player-name")] pub struct PlayerName { /// Element-specific attributes diff --git a/musicxml/src/elements/plop.rs b/musicxml/src/elements/plop.rs index deae4dd..2f04dd3 100644 --- a/musicxml/src/elements/plop.rs +++ b/musicxml/src/elements/plop.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Plop] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PlopAttributes { /// Indicates the color of an element. pub color: Option, @@ -56,7 +56,7 @@ pub struct PlopAttributes { /// ![Plop](https://hedgetechllc.github.io/musicxml/musicxml/elements/plop.png) /// /// The plop appears before the main note and comes from above the main pitch. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Plop { /// Element-specific attributes pub attributes: PlopAttributes, diff --git a/musicxml/src/elements/pluck.rs b/musicxml/src/elements/pluck.rs index c0a54b0..29eccd6 100644 --- a/musicxml/src/elements/pluck.rs +++ b/musicxml/src/elements/pluck.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Pluck] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PluckAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct PluckAttributes { /// The [Pluck] element is used to specify the plucking fingering on a fretted instrument, where the fingering element refers to the fretting fingering. /// /// Typical values are p, i, m, a for pulgar/thumb, indicio/index, medio/middle, and anular/ring fingers. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Pluck { /// Element-specific attributes pub attributes: PluckAttributes, diff --git a/musicxml/src/elements/pp.rs b/musicxml/src/elements/pp.rs index 8a93080..76502ae 100644 --- a/musicxml/src/elements/pp.rs +++ b/musicxml/src/elements/pp.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Pp] element represents a pianissimo dynamic marking. /// /// ![pp](https://hedgetechllc.github.io/musicxml/musicxml/elements/pp.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Pp { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/ppp.rs b/musicxml/src/elements/ppp.rs index 6b4b8f4..e923268 100644 --- a/musicxml/src/elements/ppp.rs +++ b/musicxml/src/elements/ppp.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Ppp] element represents a triple piano dynamic marking. /// /// ![ppp](https://hedgetechllc.github.io/musicxml/musicxml/elements/ppp.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Ppp { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/pppp.rs b/musicxml/src/elements/pppp.rs index fee5bf3..df23c40 100644 --- a/musicxml/src/elements/pppp.rs +++ b/musicxml/src/elements/pppp.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Pppp] element represents a pppp dynamic marking. /// /// ![pppp](https://hedgetechllc.github.io/musicxml/musicxml/elements/pppp.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Pppp { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/ppppp.rs b/musicxml/src/elements/ppppp.rs index e3b987b..5e61417 100644 --- a/musicxml/src/elements/ppppp.rs +++ b/musicxml/src/elements/ppppp.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Ppppp] element represents a pppp dynamic marking. /// /// ![ppppp](https://hedgetechllc.github.io/musicxml/musicxml/elements/ppppp.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Ppppp { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/pppppp.rs b/musicxml/src/elements/pppppp.rs index 0ea9632..613013a 100644 --- a/musicxml/src/elements/pppppp.rs +++ b/musicxml/src/elements/pppppp.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Pppppp] element represents a pppp dynamic marking. /// /// ![pppppp](https://hedgetechllc.github.io/musicxml/musicxml/elements/pppppp.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Pppppp { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/pre_bend.rs b/musicxml/src/elements/pre_bend.rs index 60e800f..93e803f 100644 --- a/musicxml/src/elements/pre_bend.rs +++ b/musicxml/src/elements/pre_bend.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [PreBend] element indicates that a bend is a pre-bend rather than a normal bend or a release. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("pre-bend")] pub struct PreBend { /// Element-specific attributes diff --git a/musicxml/src/elements/prefix.rs b/musicxml/src/elements/prefix.rs index 098b0d5..d52c27f 100644 --- a/musicxml/src/elements/prefix.rs +++ b/musicxml/src/elements/prefix.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Prefix] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PrefixAttributes { /// Indicates the color of an element. pub color: Option, @@ -40,7 +40,7 @@ pub struct PrefixAttributes { /// Values for the [Prefix] element include plus and the accidental values sharp, flat, natural, double-sharp, flat-flat, and sharp-sharp. /// /// The [Prefix] element may contain additional values for symbols specific to particular figured bass styles. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Prefix { /// Element-specific attributes pub attributes: PrefixAttributes, diff --git a/musicxml/src/elements/principal_voice.rs b/musicxml/src/elements/principal_voice.rs index 0bb427e..bd4baf8 100644 --- a/musicxml/src/elements/principal_voice.rs +++ b/musicxml/src/elements/principal_voice.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [PrincipalVoice] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PrincipalVoiceAttributes { /// Indicates the type of symbol used. When used for analysis separate from any printed score markings, /// it should be set to none. Otherwise if the type is stop it should be set to plain. @@ -65,7 +65,7 @@ pub struct PrincipalVoiceAttributes { /// The [PrincipalVoice] element represents principal and secondary voices in a score, either for analysis or for square bracket symbols that appear in a score. /// /// The content of the [PrincipalVoice] element is used for analysis and may be any text value. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("principal-voice")] pub struct PrincipalVoice { /// Element-specific attributes diff --git a/musicxml/src/elements/print.rs b/musicxml/src/elements/print.rs index 1b192ed..8601e4e 100644 --- a/musicxml/src/elements/print.rs +++ b/musicxml/src/elements/print.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Print] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PrintAttributes { /// The number of blank pages to insert before the current measure. It is ignored if `new_page` is not "yes". /// These blank pages have no music, but may have text or images specified by the [Credit][super::Credit] element. @@ -31,7 +31,7 @@ pub struct PrintAttributes { } /// Contents of the [Print] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct PrintContents { /// The [PageLayout] element contains general page layout parameters. pub page_layout: Option, @@ -56,7 +56,7 @@ pub struct PrintContents { /// /// Layout group elements in a [Print] element only apply to the current page, system, or staff. Music that follows continues to take /// the default values from the layout determined by the [Defaults][super::Defaults] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Print { /// Element-specific attributes pub attributes: PrintAttributes, diff --git a/musicxml/src/elements/pull_off.rs b/musicxml/src/elements/pull_off.rs index ea670a7..adc78b5 100644 --- a/musicxml/src/elements/pull_off.rs +++ b/musicxml/src/elements/pull_off.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [PullOff] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct PullOffAttributes { /// Distinguishes multiple pull-offs when they overlap in MusicXML document order. pub r#type: StartStop, @@ -52,7 +52,7 @@ pub struct PullOffAttributes { /// Since a single slur can be marked over many notes, the [PullOff] element is separate so the individual pair of notes can be specified. /// /// The element content can be used to specify how the [PullOff] should be notated. An empty element leaves this choice up to the application. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("pull-off")] pub struct PullOff { /// Element-specific attributes diff --git a/musicxml/src/elements/rehearsal.rs b/musicxml/src/elements/rehearsal.rs index 610a08c..7ac63e6 100644 --- a/musicxml/src/elements/rehearsal.rs +++ b/musicxml/src/elements/rehearsal.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Rehearsal] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct RehearsalAttributes { /// Indicates the color of an element. pub color: Option, @@ -93,7 +93,7 @@ pub struct RehearsalAttributes { /// ![Rehearsal](https://hedgetechllc.github.io/musicxml/musicxml/elements/rehearsal.png) /// /// The `enclosure` is square if not specified. Left justification is used if not specified. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Rehearsal { /// Element-specific attributes pub attributes: RehearsalAttributes, diff --git a/musicxml/src/elements/relation.rs b/musicxml/src/elements/relation.rs index d0a82f5..61464fa 100644 --- a/musicxml/src/elements/relation.rs +++ b/musicxml/src/elements/relation.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Relation] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct RelationAttributes { /// Standard type values are music, words, and arrangement, but other types may be used. pub r#type: Token, @@ -13,7 +13,7 @@ pub struct RelationAttributes { /// The [Relation] element describes a related resource for the music that is encoded. /// /// This is similar to the [Dublin Core relation](https://www.dublincore.org/specifications/dublin-core/dcmi-terms/elements11/relation/) element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Relation { /// Element-specific attributes pub attributes: RelationAttributes, diff --git a/musicxml/src/elements/release.rs b/musicxml/src/elements/release.rs index 4bf510e..8ef000d 100644 --- a/musicxml/src/elements/release.rs +++ b/musicxml/src/elements/release.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Release] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ReleaseAttributes { /// Specifies where the release starts in terms of divisions relative to the current note. pub offset: Option, @@ -13,7 +13,7 @@ pub struct ReleaseAttributes { /// The [Release] element indicates that a bend is a release rather than a normal bend or pre-bend. /// /// The `first_beat` and `last_beat` attributes of the parent [Bend][super::Bend] element are relative to the original note position, not this offset value. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Release { /// Element-specific attributes pub attributes: ReleaseAttributes, diff --git a/musicxml/src/elements/repeat.rs b/musicxml/src/elements/repeat.rs index 51b88e5..871d95b 100644 --- a/musicxml/src/elements/repeat.rs +++ b/musicxml/src/elements/repeat.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Repeat] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct RepeatAttributes { /// The start of the repeat has a forward direction while the end of the repeat has a backward direction. pub direction: BackwardForward, @@ -21,7 +21,7 @@ pub struct RepeatAttributes { /// The [Repeat] element represents repeat marks. /// /// ![Repeat](https://hedgetechllc.github.io/musicxml/musicxml/elements/repeat.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Repeat { /// Element-specific attributes pub attributes: RepeatAttributes, diff --git a/musicxml/src/elements/rest.rs b/musicxml/src/elements/rest.rs index a9f5748..82566ce 100644 --- a/musicxml/src/elements/rest.rs +++ b/musicxml/src/elements/rest.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Rest] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct RestAttributes { /// If yes, this indicates this is a complete measure rest. pub measure: Option, } /// Contents of the [Rest] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct RestContents { /// The [DisplayStep] element specifies the step of the rest. pub display_step: Option, @@ -23,7 +23,7 @@ pub struct RestContents { /// The [Rest] element indicates notated rests or silences. /// /// A [Rest] element is usually empty, but placement on the staff can be specified using [DisplayStep] and [DisplayOctave] elements. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Rest { /// Element-specific attributes pub attributes: RestAttributes, diff --git a/musicxml/src/elements/rf.rs b/musicxml/src/elements/rf.rs index f99699c..f926c2e 100644 --- a/musicxml/src/elements/rf.rs +++ b/musicxml/src/elements/rf.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Rf] element represents a rinforzando rf dynamic marking. /// /// ![rf](https://hedgetechllc.github.io/musicxml/musicxml/elements/rf.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Rf { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/rfz.rs b/musicxml/src/elements/rfz.rs index 30ecfa4..82895f5 100644 --- a/musicxml/src/elements/rfz.rs +++ b/musicxml/src/elements/rfz.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Rfz] element represents a rinforzando rfz dynamic marking. /// /// ![rfz](https://hedgetechllc.github.io/musicxml/musicxml/elements/rfz.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Rfz { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/right_divider.rs b/musicxml/src/elements/right_divider.rs index 696d6b0..5fecb83 100644 --- a/musicxml/src/elements/right_divider.rs +++ b/musicxml/src/elements/right_divider.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [RightDivider] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct RightDividerAttributes { /// Indicates the color of an element. pub color: Option, @@ -58,7 +58,7 @@ pub struct RightDividerAttributes { /// /// The default vertical position is half the [SystemDistance][super::SystemDistance] value from the top of the system that is below the divider. /// The default horizontal position is the right system margin. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("right-divider")] pub struct RightDivider { /// Element-specific attributes diff --git a/musicxml/src/elements/right_margin.rs b/musicxml/src/elements/right_margin.rs index baa49e1..886dcf1 100644 --- a/musicxml/src/elements/right_margin.rs +++ b/musicxml/src/elements/right_margin.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [RightMargin] element specifies the right margin for the parent element in tenths. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("right-margin")] pub struct RightMargin { /// Element-specific attributes diff --git a/musicxml/src/elements/rights.rs b/musicxml/src/elements/rights.rs index e965e46..ebd7d63 100644 --- a/musicxml/src/elements/rights.rs +++ b/musicxml/src/elements/rights.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Rights] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct RightsAttributes { /// Standard type values are music, words, and arrangement, but other types may be used. /// This attribute is only needed when there are multiple [Rights] elements. @@ -15,7 +15,7 @@ pub struct RightsAttributes { /// /// This is similar to the [Dublin Core rights](https://www.dublincore.org/specifications/dublin-core/dcmi-terms/elements11/rights/) element. /// Words, music, and derivatives can have different types, so multiple [Rights] elements with different type attributes are supported. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Rights { /// Element-specific attributes pub attributes: RightsAttributes, diff --git a/musicxml/src/elements/root.rs b/musicxml/src/elements/root.rs index 7361202..3b6ce63 100644 --- a/musicxml/src/elements/root.rs +++ b/musicxml/src/elements/root.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Root] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct RootContents { /// The [RootStep] element specifies the pitch like C, D, E vs. a scale degree like 1, 2, 3. pub root_step: RootStep, @@ -16,7 +16,7 @@ pub struct RootContents { /// /// It is used with chord symbols in popular music. The [Root] element has a [RootStep] and optional [RootAlter] element similar to the /// [Step][super::Step] and [Alter][super::Alter] elements, but renamed to distinguish the different musical meanings. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Root { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/root_alter.rs b/musicxml/src/elements/root_alter.rs index 36745d4..bf9ceb3 100644 --- a/musicxml/src/elements/root_alter.rs +++ b/musicxml/src/elements/root_alter.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [RootAlter] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct RootAlterAttributes { /// Indicates the color of an element. pub color: Option, @@ -47,7 +47,7 @@ pub struct RootAlterAttributes { /// /// In some chord styles, the text for the [RootStep][super::RootStep] element may include [RootAlter] information. In that case, /// the `print_object` attribute of the [RootAlter] element can be set to "no". -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("root-alter")] pub struct RootAlter { /// Element-specific attributes diff --git a/musicxml/src/elements/root_step.rs b/musicxml/src/elements/root_step.rs index e50f2a3..bf8ff67 100644 --- a/musicxml/src/elements/root_step.rs +++ b/musicxml/src/elements/root_step.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [RootStep] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct RootStepAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct RootStepAttributes { /// The [RootStep] element represents the pitch step of the root of the current chord within the harmony element. /// /// ![RootStep](https://hedgetechllc.github.io/musicxml/musicxml/elements/root-step.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("root-step")] pub struct RootStep { /// Element-specific attributes diff --git a/musicxml/src/elements/scaling.rs b/musicxml/src/elements/scaling.rs index 5e18baa..20aa007 100644 --- a/musicxml/src/elements/scaling.rs +++ b/musicxml/src/elements/scaling.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Scaling] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct ScalingContents { /// The [Millimeters] element specifies the number of millimeters that are equivalent to the scaling number. pub millimeters: Millimeters, @@ -17,7 +17,7 @@ pub struct ScalingContents { /// The translation to absolute units is done with the [Scaling] element, which specifies how many millimeters are equal to how many tenths. /// For a staff height of 7 mm, [Millimeters] would be set to 7 while [Tenths] is set to 40. The ability to set a formula rather than a single scaling /// factor helps avoid roundoff errors. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Scaling { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/schleifer.rs b/musicxml/src/elements/schleifer.rs index 37d4eae..28f21b0 100644 --- a/musicxml/src/elements/schleifer.rs +++ b/musicxml/src/elements/schleifer.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Schleifer] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SchleiferAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct SchleiferAttributes { /// The name for the [Schleifer] element is based on the German ornament name, to avoid confusion with the [Slide][super::Slide] element. /// /// ![Schleifer](https://hedgetechllc.github.io/musicxml/musicxml/elements/schleifer.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Schleifer { /// Element-specific attributes pub attributes: SchleiferAttributes, diff --git a/musicxml/src/elements/scoop.rs b/musicxml/src/elements/scoop.rs index eb19ab4..70c0d5a 100644 --- a/musicxml/src/elements/scoop.rs +++ b/musicxml/src/elements/scoop.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Scoop] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ScoopAttributes { /// Indicates the color of an element. pub color: Option, @@ -56,7 +56,7 @@ pub struct ScoopAttributes { /// ![Scoop](https://hedgetechllc.github.io/musicxml/musicxml/elements/scoop.png) /// /// The scoop appears before the main note and comes from below the main pitch. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Scoop { /// Element-specific attributes pub attributes: ScoopAttributes, diff --git a/musicxml/src/elements/scordatura.rs b/musicxml/src/elements/scordatura.rs index 765207e..17a42f3 100644 --- a/musicxml/src/elements/scordatura.rs +++ b/musicxml/src/elements/scordatura.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Scordatura] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ScordaturaAttributes { /// Specifies an ID that is unique to the entire document. pub id: Option, @@ -16,7 +16,7 @@ pub struct ScordaturaAttributes { /// ![Scordatura](https://hedgetechllc.github.io/musicxml/musicxml/elements/scordatura.png) /// /// Strings are numbered from high to low. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Scordatura { /// Element-specific attributes pub attributes: ScordaturaAttributes, diff --git a/musicxml/src/elements/score_instrument.rs b/musicxml/src/elements/score_instrument.rs index 9813136..429bc9c 100644 --- a/musicxml/src/elements/score_instrument.rs +++ b/musicxml/src/elements/score_instrument.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [ScoreInstrument] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ScoreInstrumentAttributes { /// Specifies an ID that is unique to the entire document. pub id: Id, } /// Contents of the [ScoreInstrument] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct ScoreInstrumentContents { /// The [InstrumentName] element specifies the name of the instrument. pub instrument_name: InstrumentName, @@ -38,7 +38,7 @@ pub struct ScoreInstrumentContents { /// /// The [ScoreInstrument] element can also distinguish multiple instruments of the same type that are on the same part, such as Clarinet 1 and /// Clarinet 2 instruments within a Clarinets 1 and 2 part. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("score-instrument")] pub struct ScoreInstrument { /// Element-specific attributes diff --git a/musicxml/src/elements/score_part.rs b/musicxml/src/elements/score_part.rs index c3f2926..747d1b8 100644 --- a/musicxml/src/elements/score_part.rs +++ b/musicxml/src/elements/score_part.rs @@ -8,14 +8,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [ScorePart] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ScorePartAttributes { /// Specifies an ID that is unique to the entire document. pub id: Id, } /// Contents of the [ScorePart] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct ScorePartContents { /// The [Identification] element contains information about the creator, rights, and encoding of the part. pub identification: Option, @@ -45,7 +45,7 @@ pub struct ScorePartContents { /// /// Often each MusicXML part corresponds to a track in a Standard MIDI Format 1 file. In this case, the [MidiDevice] element is used to make a /// MIDI device or port assignment for the given track or specific MIDI instruments. Initial [MidiInstrument] assignments may be made here as well. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("score-part")] pub struct ScorePart { /// Element-specific attributes diff --git a/musicxml/src/elements/score_partwise.rs b/musicxml/src/elements/score_partwise.rs index 3d68593..244738d 100644 --- a/musicxml/src/elements/score_partwise.rs +++ b/musicxml/src/elements/score_partwise.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [ScorePartwise] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ScorePartwiseAttributes { /// The `version` attribute was added in Version 1.1 for the [ScorePartwise] and [ScoreTimewise][super::ScoreTimewise] /// documents. It provides an easier way to get version information than through the MusicXML public ID. The default value is @@ -15,7 +15,7 @@ pub struct ScorePartwiseAttributes { } /// Contents of the [ScorePartwise] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct ScorePartwiseContents { /// The [Work] element specifies the work title and opus number for the score. pub work: Option, @@ -38,7 +38,7 @@ pub struct ScorePartwiseContents { /// The [ScorePartwise] element is the root element for a partwise MusicXML score. /// /// It includes score header information followed by a series of [Part] elements with [Measure][super::Measure] elements inside. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("score-partwise")] pub struct ScorePartwise { /// Element-specific attributes diff --git a/musicxml/src/elements/score_timewise.rs b/musicxml/src/elements/score_timewise.rs index c823c1a..a2d5296 100644 --- a/musicxml/src/elements/score_timewise.rs +++ b/musicxml/src/elements/score_timewise.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [ScoreTimewise] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ScoreTimewiseAttributes { /// The `version` attribute was added in Version 1.1 for the [ScorePartwise][super::ScorePartwise] and [ScoreTimewise] /// documents. It provides an easier way to get version information than through the MusicXML public ID. The default value is @@ -15,7 +15,7 @@ pub struct ScoreTimewiseAttributes { } /// Contents of the [ScoreTimewise] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct ScoreTimewiseContents { /// The [Work] element specifies the work title and movement or opus number information. pub work: Option, @@ -38,7 +38,7 @@ pub struct ScoreTimewiseContents { /// The [ScoreTimewise] element is the root element for a timewise MusicXML score. /// /// It includes score header information followed by a series of [Measure] elements with [Part][super::Part] elements inside. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("score-timewise")] pub struct ScoreTimewise { /// Element-specific attributes diff --git a/musicxml/src/elements/second.rs b/musicxml/src/elements/second.rs index ba68ba9..380870a 100644 --- a/musicxml/src/elements/second.rs +++ b/musicxml/src/elements/second.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [Second] element is the part of the swing ratio that refers to the second of two consecutive notes. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Second { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/segno.rs b/musicxml/src/elements/segno.rs index ecbaf75..b0e5af8 100644 --- a/musicxml/src/elements/segno.rs +++ b/musicxml/src/elements/segno.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Segno] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SegnoAttributes { /// Indicates the color of an element. pub color: Option, @@ -63,7 +63,7 @@ pub struct SegnoAttributes { /// ![Segno](https://hedgetechllc.github.io/musicxml/musicxml/elements/segno.png) /// /// A [Sound][super::Sound] element is also needed to guide playback applications reliably. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Segno { /// Element-specific attributes pub attributes: SegnoAttributes, diff --git a/musicxml/src/elements/semi_pitched.rs b/musicxml/src/elements/semi_pitched.rs index d0063e3..88f1f5c 100644 --- a/musicxml/src/elements/semi_pitched.rs +++ b/musicxml/src/elements/semi_pitched.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [SemiPitched] element represents categories of indefinite pitch for percussion instruments. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("semi-pitched")] pub struct SemiPitched { /// Element-specific attributes diff --git a/musicxml/src/elements/senza_misura.rs b/musicxml/src/elements/senza_misura.rs index e9c7afa..c796bd3 100644 --- a/musicxml/src/elements/senza_misura.rs +++ b/musicxml/src/elements/senza_misura.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// /// The optional element content indicates the symbol to be used, if any, such as an X. The [Time][super::Time] element's `symbol` /// attribute is not used when a [SenzaMisura] element is present. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("senza-misura")] pub struct SenzaMisura { /// Element-specific attributes diff --git a/musicxml/src/elements/sf.rs b/musicxml/src/elements/sf.rs index 6930e53..a9fca74 100644 --- a/musicxml/src/elements/sf.rs +++ b/musicxml/src/elements/sf.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Sf] element represents a sforzando sf dynamic marking. /// /// ![sf](https://hedgetechllc.github.io/musicxml/musicxml/elements/sf.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Sf { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/sffz.rs b/musicxml/src/elements/sffz.rs index 1158d08..005a2af 100644 --- a/musicxml/src/elements/sffz.rs +++ b/musicxml/src/elements/sffz.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Sffz] element represents a sforzando sffz dynamic marking. /// /// ![sffz](https://hedgetechllc.github.io/musicxml/musicxml/elements/sffz.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Sffz { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/sfp.rs b/musicxml/src/elements/sfp.rs index e39cc1b..d04bd21 100644 --- a/musicxml/src/elements/sfp.rs +++ b/musicxml/src/elements/sfp.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Sfp] element represents a sforzando piano sfp dynamic marking. /// /// ![sfp](https://hedgetechllc.github.io/musicxml/musicxml/elements/sfp.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Sfp { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/sfpp.rs b/musicxml/src/elements/sfpp.rs index 4e840d7..d096314 100644 --- a/musicxml/src/elements/sfpp.rs +++ b/musicxml/src/elements/sfpp.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Sfpp] element represents a sforzando pianissimo sfpp dynamic marking. /// /// ![sfpp](https://hedgetechllc.github.io/musicxml/musicxml/elements/sfpp.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Sfpp { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/sfz.rs b/musicxml/src/elements/sfz.rs index a80c464..adb5a48 100644 --- a/musicxml/src/elements/sfz.rs +++ b/musicxml/src/elements/sfz.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Sfz] element represents a sforzando sfz dynamic marking. /// /// ![sfz](https://hedgetechllc.github.io/musicxml/musicxml/elements/sfz.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Sfz { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/sfzp.rs b/musicxml/src/elements/sfzp.rs index e60e2a0..4637c02 100644 --- a/musicxml/src/elements/sfzp.rs +++ b/musicxml/src/elements/sfzp.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Sfzp] element represents a sforzando piano sfzp dynamic marking. /// /// ![sfzp](https://hedgetechllc.github.io/musicxml/musicxml/elements/sfzp.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Sfzp { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/shake.rs b/musicxml/src/elements/shake.rs index 20d833f..f050c1b 100644 --- a/musicxml/src/elements/shake.rs +++ b/musicxml/src/elements/shake.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Shake] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ShakeAttributes { /// If yes, the trill accelerates during playback. It is no if not specified. pub accelerate: Option, @@ -59,7 +59,7 @@ pub struct ShakeAttributes { /// The [Shake] element has a similar appearance to an [InvertedMordent][super::InvertedMordent] element. /// /// ![Shake](https://hedgetechllc.github.io/musicxml/musicxml/elements/shake.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Shake { /// Element-specific attributes pub attributes: ShakeAttributes, diff --git a/musicxml/src/elements/sign.rs b/musicxml/src/elements/sign.rs index 58598ff..572d5c9 100644 --- a/musicxml/src/elements/sign.rs +++ b/musicxml/src/elements/sign.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [Sign] element represents the clef symbol. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Sign { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/slash.rs b/musicxml/src/elements/slash.rs index 1040a8c..8e08c3c 100644 --- a/musicxml/src/elements/slash.rs +++ b/musicxml/src/elements/slash.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Slash] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SlashAttributes { /// Indicates the starting or stopping point of the section displaying slash notation. pub r#type: StartStop, @@ -16,7 +16,7 @@ pub struct SlashAttributes { } /// Contents of the [Slash] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct SlashContents { /// The [SlashType] element indicates the notation style for the slash notation. pub slash_type: Option, @@ -32,7 +32,7 @@ pub struct SlashContents { /// /// The stop type indicates the first beat where slash notation no longer displayed. Both the start and stop of the slash notation should be /// specified unless the slashes are displayed through the end of the part. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Slash { /// Element-specific attributes pub attributes: SlashAttributes, diff --git a/musicxml/src/elements/slash_dot.rs b/musicxml/src/elements/slash_dot.rs index 12ad2c9..a546208 100644 --- a/musicxml/src/elements/slash_dot.rs +++ b/musicxml/src/elements/slash_dot.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [SlashDot] element is used to specify any augmentation dots in the note type used to display repetition marks. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("slash-dot")] pub struct SlashDot { /// Element-specific attributes diff --git a/musicxml/src/elements/slash_type.rs b/musicxml/src/elements/slash_type.rs index a917e5a..5cedcc5 100644 --- a/musicxml/src/elements/slash_type.rs +++ b/musicxml/src/elements/slash_type.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [SlashType] element indicates the graphical note type to use for the display of repetition marks. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("slash-type")] pub struct SlashType { /// Element-specific attributes diff --git a/musicxml/src/elements/slide.rs b/musicxml/src/elements/slide.rs index c095ded..f5b358c 100644 --- a/musicxml/src/elements/slide.rs +++ b/musicxml/src/elements/slide.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Slide] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SlideAttributes { /// Indicates if this is the start or stop of the slide. pub r#type: StartStop, @@ -65,7 +65,7 @@ pub struct SlideAttributes { /// ![Slide](https://hedgetechllc.github.io/musicxml/musicxml/elements/slide.png) /// /// A [Slide] is continuous between the two pitches and defaults to a solid line. The optional text is printed alongside the line. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Slide { /// Element-specific attributes pub attributes: SlideAttributes, diff --git a/musicxml/src/elements/slur.rs b/musicxml/src/elements/slur.rs index 0140ec6..112ce7d 100644 --- a/musicxml/src/elements/slur.rs +++ b/musicxml/src/elements/slur.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Slur] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SlurAttributes { /// Indicates if this is the start, stop, or continuation of the slur. pub r#type: StartStopContinue, @@ -66,7 +66,7 @@ pub struct SlurAttributes { /// /// Normal slurs and S-shaped slurs need only two bezier points: one associated with the start of the slur, the other with the stop. /// Complex slurs and slurs divided over system breaks can specify additional bezier data at [Slur] elements with a continue type. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Slur { /// Element-specific attributes pub attributes: SlurAttributes, diff --git a/musicxml/src/elements/smear.rs b/musicxml/src/elements/smear.rs index 245feaa..739c43d 100644 --- a/musicxml/src/elements/smear.rs +++ b/musicxml/src/elements/smear.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Smear] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SmearAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct SmearAttributes { /// The [Smear] element represents the tilde-shaped smear symbol used in brass notation. /// /// ![Smear](https://hedgetechllc.github.io/musicxml/musicxml/elements/smear.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Smear { /// Element-specific attributes pub attributes: SmearAttributes, diff --git a/musicxml/src/elements/snap_pizzicato.rs b/musicxml/src/elements/snap_pizzicato.rs index 40f4f74..d4ed9c6 100644 --- a/musicxml/src/elements/snap_pizzicato.rs +++ b/musicxml/src/elements/snap_pizzicato.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [SnapPizzicato] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SnapPizzicatoAttributes { /// Indicates the color of an element. pub color: Option, @@ -45,7 +45,7 @@ pub struct SnapPizzicatoAttributes { /// /// This is a circle with a line, where the line comes inside the circle. It is distinct from the [ThumbPosition][super::ThumbPosition] symbol, /// where the line does not come inside the circle. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("snap-pizzicato")] pub struct SnapPizzicato { /// Element-specific attributes diff --git a/musicxml/src/elements/soft_accent.rs b/musicxml/src/elements/soft_accent.rs index 3995266..0680965 100644 --- a/musicxml/src/elements/soft_accent.rs +++ b/musicxml/src/elements/soft_accent.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [SoftAccent] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SoftAccentAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct SoftAccentAttributes { /// ![SoftAccent](https://hedgetechllc.github.io/musicxml/musicxml/elements/soft-accent.png) /// /// It can be combined with other articulations to implement the first eight symbols in the Standard Music Font Layout (SMuFL) Articulation supplement range. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("soft-accent")] pub struct SoftAccent { /// Element-specific attributes diff --git a/musicxml/src/elements/software.rs b/musicxml/src/elements/software.rs index 2fe128a..499d449 100644 --- a/musicxml/src/elements/software.rs +++ b/musicxml/src/elements/software.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [Software] element specifies what software created the digital encoding. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Software { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/solo.rs b/musicxml/src/elements/solo.rs index 0fb0feb..c3f4093 100644 --- a/musicxml/src/elements/solo.rs +++ b/musicxml/src/elements/solo.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [Solo] element is present if performance is intended by a solo instrument. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Solo { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/sound.rs b/musicxml/src/elements/sound.rs index a32e1ff..3790436 100644 --- a/musicxml/src/elements/sound.rs +++ b/musicxml/src/elements/sound.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Sound] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SoundAttributes { /// Indicates the end point for a forward jump to a coda sign. If there are multiple jumps, the value of these parameters can be used to name and distinguish them. pub coda: Option, @@ -61,7 +61,7 @@ pub struct SoundAttributes { } /// Contents of the [Sound] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct SoundContents { /// The [InstrumentChange] element is used to change instruments mid-score. pub instrument_change: Vec, @@ -89,7 +89,7 @@ pub struct SoundContents { /// If the [Sound] element is a child of a [Direction][super::Direction] element, the sound [Offset] element overrides the /// direction [Offset] element if both elements are present. Note that the offset reflects the intended musical position for /// the change in sound. It should not be used to compensate for latency issues in particular hardware configurations. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Sound { /// Element-specific attributes pub attributes: SoundAttributes, diff --git a/musicxml/src/elements/sounding_pitch.rs b/musicxml/src/elements/sounding_pitch.rs index e889eb7..6f8218f 100644 --- a/musicxml/src/elements/sounding_pitch.rs +++ b/musicxml/src/elements/sounding_pitch.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The presence of the [SoundingPitch] element indicates this is the pitch which is heard when playing the harmonic. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("sounding-pitch")] pub struct SoundingPitch { /// Element-specific attributes diff --git a/musicxml/src/elements/source.rs b/musicxml/src/elements/source.rs index 1df13bb..7315904 100644 --- a/musicxml/src/elements/source.rs +++ b/musicxml/src/elements/source.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Source] element describes the source for the music that is encoded. /// /// This is similar to the [Dublin Core source](https://www.dublincore.org/specifications/dublin-core/dcmi-terms/elements11/source/) element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Source { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/spiccato.rs b/musicxml/src/elements/spiccato.rs index ec3d07f..42e2b22 100644 --- a/musicxml/src/elements/spiccato.rs +++ b/musicxml/src/elements/spiccato.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Spiccato] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SpiccatoAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct SpiccatoAttributes { /// The [Spiccato] element is used for a stroke articulation, as opposed to a dot or a wedge. /// /// ![Spiccato](https://hedgetechllc.github.io/musicxml/musicxml/elements/spiccato.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Spiccato { /// Element-specific attributes pub attributes: SpiccatoAttributes, diff --git a/musicxml/src/elements/staccatissimo.rs b/musicxml/src/elements/staccatissimo.rs index 68becb2..686b4c8 100644 --- a/musicxml/src/elements/staccatissimo.rs +++ b/musicxml/src/elements/staccatissimo.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Staccatissimo] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StaccatissimoAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct StaccatissimoAttributes { /// The [Staccatissimo] element is used for a wedge articulation, as opposed to a dot or a stroke. /// /// ![Staccatissimo](https://hedgetechllc.github.io/musicxml/musicxml/elements/staccatissimo.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Staccatissimo { /// Element-specific attributes pub attributes: StaccatissimoAttributes, diff --git a/musicxml/src/elements/staccato.rs b/musicxml/src/elements/staccato.rs index 4829f7b..c50daa8 100644 --- a/musicxml/src/elements/staccato.rs +++ b/musicxml/src/elements/staccato.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Staccato] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StaccatoAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct StaccatoAttributes { /// The [Staccato] element is used for a dot articulation, as opposed to a stroke or a wedge. /// /// ![Staccato](https://hedgetechllc.github.io/musicxml/musicxml/elements/staccato.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Staccato { /// Element-specific attributes pub attributes: StaccatoAttributes, diff --git a/musicxml/src/elements/staff.rs b/musicxml/src/elements/staff.rs index 37369ac..2130614 100644 --- a/musicxml/src/elements/staff.rs +++ b/musicxml/src/elements/staff.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// [Staff] assignment is only needed for music notated on multiple staves. /// /// Staff values are numbers, with 1 referring to the top-most staff in a part. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Staff { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/staff_details.rs b/musicxml/src/elements/staff_details.rs index 4e636f5..6fc8f90 100644 --- a/musicxml/src/elements/staff_details.rs +++ b/musicxml/src/elements/staff_details.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [StaffDetails] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StaffDetailsAttributes { /// Specifies the staff number from top to bottom within the part. The value is 1 if not present. pub number: Option, @@ -18,7 +18,7 @@ pub struct StaffDetailsAttributes { } /// Contents of the [StaffDetails] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct StaffDetailsContents { /// The [StaffType] element indicates the type of staff. pub staff_type: Option, @@ -35,7 +35,7 @@ pub struct StaffDetailsContents { } /// The [StaffDetails] element is used to indicate different types of staves. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("staff-details")] pub struct StaffDetails { /// Element-specific attributes diff --git a/musicxml/src/elements/staff_distance.rs b/musicxml/src/elements/staff_distance.rs index 6aabcd6..d8b0669 100644 --- a/musicxml/src/elements/staff_distance.rs +++ b/musicxml/src/elements/staff_distance.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [StaffDistance] element represents the vertical distance from the bottom line of the previous staff in this system to the top line of the current staff. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("staff-distance")] pub struct StaffDistance { /// Element-specific attributes diff --git a/musicxml/src/elements/staff_divide.rs b/musicxml/src/elements/staff_divide.rs index 9b886ff..da0726d 100644 --- a/musicxml/src/elements/staff_divide.rs +++ b/musicxml/src/elements/staff_divide.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [StaffDivide] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StaffDivideAttributes { /// Specifies the type of staff division symbol. pub r#type: StaffDivideSymbol, @@ -61,7 +61,7 @@ pub struct StaffDivideAttributes { /// The [StaffDivide] element represents the staff division arrow symbols found in the Standard Music Font Layout (SMuFL) /// [Staff brackets and dividers](https://www.w3.org/2021/03/smufl14/tables/staff-brackets-and-dividers.html) range at code points /// U+E00B, U+E00C, and U+E00D. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("staff-divide")] pub struct StaffDivide { /// Element-specific attributes diff --git a/musicxml/src/elements/staff_layout.rs b/musicxml/src/elements/staff_layout.rs index a028d99..a08ff6b 100644 --- a/musicxml/src/elements/staff_layout.rs +++ b/musicxml/src/elements/staff_layout.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [StaffLayout] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StaffLayoutAttributes { /// Refers to staff numbers within the part, from top to bottom on the system. A value of 1 is used if not present. pub number: Option, } /// Contents of the [StaffLayout] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct StaffLayoutContents { /// The [StaffDistance] element specifies the vertical distance from the bottom line of the previous staff in this system to the top line of the staff specified by the `number` attribute. pub staff_distance: Option, @@ -23,7 +23,7 @@ pub struct StaffLayoutContents { /// /// When used in the [Defaults][super::Defaults] element, the values apply to all systems in all parts. When used in the [Print][super::Print] element, /// the values apply to the current system only. This value is ignored for the first staff in a system. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("staff-layout")] pub struct StaffLayout { /// Element-specific attributes diff --git a/musicxml/src/elements/staff_lines.rs b/musicxml/src/elements/staff_lines.rs index bdc2a6d..df7ac86 100644 --- a/musicxml/src/elements/staff_lines.rs +++ b/musicxml/src/elements/staff_lines.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// The [StaffLines] element specifies the number of lines and is usually used for a non 5-line staff. /// /// If the [StaffLines] element is present, the appearance of each line may be individually specified with a [LineDetail][super::LineDetail] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("staff-lines")] pub struct StaffLines { /// Element-specific attributes diff --git a/musicxml/src/elements/staff_size.rs b/musicxml/src/elements/staff_size.rs index 09724eb..516b33e 100644 --- a/musicxml/src/elements/staff_size.rs +++ b/musicxml/src/elements/staff_size.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [StaffSize] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StaffSizeAttributes { /// Specifies the percentage scaling that applies to the notation. Values less that 100 make the notation smaller while values over 100 make the notation larger. pub scaling: Option, @@ -18,7 +18,7 @@ pub struct StaffSizeAttributes { /// /// In some cases, a [StaffSize] different than 100 also scales the notation on the staff, such as with a cue staff. In other cases, such as percussion staves, /// the lines may be more widely spaced without scaling the notation on the staff. The scaling attribute allows these two cases to be distinguished. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("staff-size")] pub struct StaffSize { /// Element-specific attributes diff --git a/musicxml/src/elements/staff_tuning.rs b/musicxml/src/elements/staff_tuning.rs index 7c9c8fc..49149b1 100644 --- a/musicxml/src/elements/staff_tuning.rs +++ b/musicxml/src/elements/staff_tuning.rs @@ -5,14 +5,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [StaffTuning] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StaffTuningAttributes { /// Indicates the staff line for this tuning, numbered from bottom to top. pub line: StaffLine, } /// Contents of the [StaffTuning] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct StaffTuningContents { /// The [TuningStep] element specifies the step of the tuning. pub tuning_step: TuningStep, @@ -25,7 +25,7 @@ pub struct StaffTuningContents { /// The [StaffTuning] element specifies the open, non-capo tuning of the lines on a tablature staff. /// /// ![StaffTuning](https://hedgetechllc.github.io/musicxml/musicxml/elements/staff-tuning.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("staff-tuning")] pub struct StaffTuning { /// Element-specific attributes diff --git a/musicxml/src/elements/staff_type.rs b/musicxml/src/elements/staff_type.rs index 5f634b8..e46342f 100644 --- a/musicxml/src/elements/staff_type.rs +++ b/musicxml/src/elements/staff_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [StaffType] element specifies different uses for the staff, as listed in the [StaffType][crate::datatypes::StaffType] data type. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("staff-type")] pub struct StaffType { /// Element-specific attributes diff --git a/musicxml/src/elements/staves.rs b/musicxml/src/elements/staves.rs index 0d50252..aae8886 100644 --- a/musicxml/src/elements/staves.rs +++ b/musicxml/src/elements/staves.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// The [Staves] element is used if there is more than one staff represented in the given part (e.g., 2 staves for typical piano parts). /// /// If absent, a value of 1 is assumed. Staves are ordered from top to bottom in a part in numerical order, with staff 1 above staff 2. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Staves { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/stem.rs b/musicxml/src/elements/stem.rs index 61f8105..450945a 100644 --- a/musicxml/src/elements/stem.rs +++ b/musicxml/src/elements/stem.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Stem] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StemAttributes { /// Indicates the color of an element. pub color: Option, @@ -32,7 +32,7 @@ pub struct StemAttributes { /// Values for the [Stem] element can be down, up, none, or double. /// /// A [Stem] element associated with a [Rest][super::Rest] refers to a stemlet. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Stem { /// Element-specific attributes pub attributes: StemAttributes, diff --git a/musicxml/src/elements/step.rs b/musicxml/src/elements/step.rs index c4a47aa..9f62e12 100644 --- a/musicxml/src/elements/step.rs +++ b/musicxml/src/elements/step.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [Step] element represents a step of the diatonic scale, represented using the English letters A through G. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Step { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/stick.rs b/musicxml/src/elements/stick.rs index b76ef53..ac081ed 100644 --- a/musicxml/src/elements/stick.rs +++ b/musicxml/src/elements/stick.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Stick] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StickAttributes { /// Indicates the presence of a dashed circle around the round beater part of a pictogram. The value is no if not specified. pub dashed_circle: Option, @@ -16,7 +16,7 @@ pub struct StickAttributes { } /// Contents of the [Stick] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct StickContents { /// The [StickType] element indicates the pictogram type of the stick, mallet, or beater. pub stick_type: StickType, @@ -27,7 +27,7 @@ pub struct StickContents { /// The [Stick] element represents pictograms where the material of the stick, mallet, or beater is included. /// /// ![Stick](https://hedgetechllc.github.io/musicxml/musicxml/elements/stick.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Stick { /// Element-specific attributes pub attributes: StickAttributes, diff --git a/musicxml/src/elements/stick_location.rs b/musicxml/src/elements/stick_location.rs index bd61d7f..e981db5 100644 --- a/musicxml/src/elements/stick_location.rs +++ b/musicxml/src/elements/stick_location.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [StickLocation] element represents pictograms for the location of sticks, beaters, or mallets on cymbals, gongs, drums, and other instruments. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("stick-location")] pub struct StickLocation { /// Element-specific attributes diff --git a/musicxml/src/elements/stick_material.rs b/musicxml/src/elements/stick_material.rs index c97774f..f718b1d 100644 --- a/musicxml/src/elements/stick_material.rs +++ b/musicxml/src/elements/stick_material.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [StickMaterial] element represents the material being displayed in a stick pictogram. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("stick-material")] pub struct StickMaterial { /// Element-specific attributes diff --git a/musicxml/src/elements/stick_type.rs b/musicxml/src/elements/stick_type.rs index d6cc164..ea72cb5 100644 --- a/musicxml/src/elements/stick_type.rs +++ b/musicxml/src/elements/stick_type.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [StickType] element represents the shape of pictograms where the material in the stick, mallet, or beater is represented in the pictogram. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("stick-type")] pub struct StickType { /// Element-specific attributes diff --git a/musicxml/src/elements/stopped.rs b/musicxml/src/elements/stopped.rs index e88d736..a096bea 100644 --- a/musicxml/src/elements/stopped.rs +++ b/musicxml/src/elements/stopped.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Stopped] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StoppedAttributes { /// Indicates the color of an element. pub color: Option, @@ -48,7 +48,7 @@ pub struct StoppedAttributes { /// /// The `smufl` attribute distinguishes different Standard Music Font Layout (SMuFL) glyphs that have a similar appearance /// such as "handbellsMalletBellSuspended" and "guitarClosePedal". If not present, the default glyph is brassMuteClosed. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Stopped { /// Element-specific attributes pub attributes: StoppedAttributes, diff --git a/musicxml/src/elements/straight.rs b/musicxml/src/elements/straight.rs index 2636b14..fa55cb0 100644 --- a/musicxml/src/elements/straight.rs +++ b/musicxml/src/elements/straight.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [Straight] element specifies that no swing is present, so consecutive notes have equal durations. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Straight { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/stress.rs b/musicxml/src/elements/stress.rs index c69e026..b494f0e 100644 --- a/musicxml/src/elements/stress.rs +++ b/musicxml/src/elements/stress.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Stress] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StressAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct StressAttributes { /// The [Stress] element indicates a stressed note. /// /// ![Stress](https://hedgetechllc.github.io/musicxml/musicxml/elements/stress.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Stress { /// Element-specific attributes pub attributes: StressAttributes, diff --git a/musicxml/src/elements/string.rs b/musicxml/src/elements/string.rs index 85fcc7c..16e49f4 100644 --- a/musicxml/src/elements/string.rs +++ b/musicxml/src/elements/string.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [StringNumber] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StringAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct StringAttributes { /// The [StringNumber] element is used with tablature notation, regular notation (where it is often circled), and chord diagrams. /// /// String numbers start with 1 for the highest pitched full-length string. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("string")] pub struct StringNumber { /// Element-specific attributes diff --git a/musicxml/src/elements/string_mute.rs b/musicxml/src/elements/string_mute.rs index 77b8c34..956e9f2 100644 --- a/musicxml/src/elements/string_mute.rs +++ b/musicxml/src/elements/string_mute.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [StringMute] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StringMuteAttributes { /// Specifies if the string mute is going on or off. pub r#type: OnOff, @@ -61,7 +61,7 @@ pub struct StringMuteAttributes { /// The [StringMute] element represents string mute on and mute off symbols. /// /// ![StringMute](https://hedgetechllc.github.io/musicxml/musicxml/elements/string-mute.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("string-mute")] pub struct StringMute { /// Element-specific attributes diff --git a/musicxml/src/elements/strong_accent.rs b/musicxml/src/elements/strong_accent.rs index beaa864..433095e 100644 --- a/musicxml/src/elements/strong_accent.rs +++ b/musicxml/src/elements/strong_accent.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [StrongAccent] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct StrongAccentAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct StrongAccentAttributes { /// The [StrongAccent] element indicates a vertical accent mark. /// /// ![StrongAccent](https://hedgetechllc.github.io/musicxml/musicxml/elements/strong-accent.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("strong-accent")] pub struct StrongAccent { /// Element-specific attributes diff --git a/musicxml/src/elements/suffix.rs b/musicxml/src/elements/suffix.rs index a99ed5c..e3bc7fe 100644 --- a/musicxml/src/elements/suffix.rs +++ b/musicxml/src/elements/suffix.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Suffix] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SuffixAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct SuffixAttributes { /// Suffixes include both symbols that come after the figure number and those that overstrike the figure number. The [Suffix] values slash, back-slash, /// and vertical are used for slashed numbers indicating chromatic alteration. The orientation and display of the slash usually depends on the figure number. /// The [Suffix] element may contain additional values for symbols specific to particular figured bass styles. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Suffix { /// Element-specific attributes pub attributes: SuffixAttributes, diff --git a/musicxml/src/elements/supports.rs b/musicxml/src/elements/supports.rs index 278878a..67e885e 100644 --- a/musicxml/src/elements/supports.rs +++ b/musicxml/src/elements/supports.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Supports] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SupportsAttributes { /// Indicates the element that is supported or not by the encoding. pub element: NmToken, @@ -23,7 +23,7 @@ pub struct SupportsAttributes { /// of an element is ambiguous if you do not know if the encoding supports that element. It also allows programs to indicate support for /// specific attributes, or specific attributes with specific values. This lets applications communicate, for example, that all system and/or /// page breaks are contained in the MusicXML file. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Supports { /// Element-specific attributes pub attributes: SupportsAttributes, diff --git a/musicxml/src/elements/swing.rs b/musicxml/src/elements/swing.rs index 0531e8d..577b0c8 100644 --- a/musicxml/src/elements/swing.rs +++ b/musicxml/src/elements/swing.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Swing] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct SwingContents { /// The [Straight] element specifies whether or not to use straight playback. pub straight: Option, @@ -28,7 +28,7 @@ pub struct SwingContents { /// The [Swing] element has no effect for playback of grace notes, notes where a [Type][super::Type] element is not present, and notes where the /// specified [Duration][super::Duration] is different than the nominal value associated with the specified [Type][super::Type]. If a swung note has /// `attack` and `release` attributes, those values modify the swung playback. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Swing { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/swing_style.rs b/musicxml/src/elements/swing_style.rs index 67f3d53..89831d1 100644 --- a/musicxml/src/elements/swing_style.rs +++ b/musicxml/src/elements/swing_style.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [SwingStyle] element is a string describing the style of swing used. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("swing-style")] pub struct SwingStyle { /// Element-specific attributes diff --git a/musicxml/src/elements/swing_type.rs b/musicxml/src/elements/swing_type.rs index efa6199..6738776 100644 --- a/musicxml/src/elements/swing_type.rs +++ b/musicxml/src/elements/swing_type.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// The [SwingType] element specifies the note type, either eighth or 16th, to which the [First][super::First] to [Second][super::Second] ratio is applied. /// /// The value is eighth if this element is not present. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("swing-type")] pub struct SwingType { /// Element-specific attributes diff --git a/musicxml/src/elements/syllabic.rs b/musicxml/src/elements/syllabic.rs index 2a3a86d..857fac5 100644 --- a/musicxml/src/elements/syllabic.rs +++ b/musicxml/src/elements/syllabic.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Syllabic] element indicates lyric hyphenation. /// /// The single, begin, end, and middle values represent single-syllable words, word-beginning syllables, word-ending syllables, and mid-word syllables, respectively. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Syllabic { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/symbol.rs b/musicxml/src/elements/symbol.rs index a153cf4..2132d33 100644 --- a/musicxml/src/elements/symbol.rs +++ b/musicxml/src/elements/symbol.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Symbol] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SymbolAttributes { /// Indicates the color of an element. pub color: Option, @@ -88,7 +88,7 @@ pub struct SymbolAttributes { /// /// It is used when an occasional musical symbol is interspersed into text. It should not be used in place of semantic markup, such as metronome marks /// that mix text and symbols. Left justification is used if not specified. Enclosure is none if not specified. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Symbol { /// Element-specific attributes pub attributes: SymbolAttributes, diff --git a/musicxml/src/elements/sync.rs b/musicxml/src/elements/sync.rs index 5ede078..ce229f1 100644 --- a/musicxml/src/elements/sync.rs +++ b/musicxml/src/elements/sync.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Sync] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct SyncAttributes { /// Specifies the style that a score following application should use to synchronize an accompaniment with a performer. pub r#type: SyncType, @@ -20,7 +20,7 @@ pub struct SyncAttributes { /// The [Sync] element specifies the style that a score-following application should use the synchronize an accompaniment with a performer. /// /// If this element is not included in a score, default synchronization depends on the application. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Sync { /// Element-specific attributes pub attributes: SyncAttributes, diff --git a/musicxml/src/elements/system_distance.rs b/musicxml/src/elements/system_distance.rs index 61d29dc..676c4bf 100644 --- a/musicxml/src/elements/system_distance.rs +++ b/musicxml/src/elements/system_distance.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// The [SystemDistance] is measured from the bottom line of the previous system to the top line of the current system. /// /// It is ignored for the first system on a page. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("system-distance")] pub struct SystemDistance { /// Element-specific attributes diff --git a/musicxml/src/elements/system_dividers.rs b/musicxml/src/elements/system_dividers.rs index 33e5620..06439a0 100644 --- a/musicxml/src/elements/system_dividers.rs +++ b/musicxml/src/elements/system_dividers.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [SystemDividers] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct SystemDividersContents { /// The [LeftDivider] element indicates the presence or absence of a system divider on the left side of the page. pub left_divider: LeftDivider, @@ -17,7 +17,7 @@ pub struct SystemDividersContents { /// Dividers on the left and right side of the page are controlled by the [LeftDivider] and [RightDivider] elements respectively. /// /// When used in the [Print][super::Print] element, the [SystemDividers] element affects the dividers that would appear between the current system and the previous system. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("system-dividers")] pub struct SystemDividers { /// Element-specific attributes diff --git a/musicxml/src/elements/system_layout.rs b/musicxml/src/elements/system_layout.rs index 62ba737..a8fed18 100644 --- a/musicxml/src/elements/system_layout.rs +++ b/musicxml/src/elements/system_layout.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [SystemLayout] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct SystemLayoutContents { /// The [SystemMargins] element specifies the left and right margins of the system. pub system_margins: Option, @@ -31,7 +31,7 @@ pub struct SystemLayoutContents { /// use the default values as determined by the [Defaults][super::Defaults] element. If any child elements are missing from the [SystemLayout] element /// in a [Print][super::Print] element, the values determined by the [Defaults][super::Defaults] element are used there as well. This type of /// [SystemLayout] element need only be read from or written to the first visible part in the score. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("system-layout")] pub struct SystemLayout { /// Element-specific attributes diff --git a/musicxml/src/elements/system_margins.rs b/musicxml/src/elements/system_margins.rs index 70cf072..4e6e8d4 100644 --- a/musicxml/src/elements/system_margins.rs +++ b/musicxml/src/elements/system_margins.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [SystemMargins] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct SystemMarginsContents { /// The [LeftMargin] element specifies the left system margin. pub left_margin: LeftMargin, @@ -15,7 +15,7 @@ pub struct SystemMarginsContents { /// System margins are relative to the page margins. /// /// Positive values indent and negative values reduce the margin size. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("system-margins")] pub struct SystemMargins { /// Element-specific attributes diff --git a/musicxml/src/elements/tap.rs b/musicxml/src/elements/tap.rs index 69e7279..fe3b64c 100644 --- a/musicxml/src/elements/tap.rs +++ b/musicxml/src/elements/tap.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Tap] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TapAttributes { /// Indicates the color of an element. pub color: Option, @@ -47,7 +47,7 @@ pub struct TapAttributes { /// ![Tap](https://hedgetechllc.github.io/musicxml/musicxml/elements/tap.png) /// /// The element content allows specification of the notation; + and T are common choices. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Tap { /// Element-specific attributes pub attributes: TapAttributes, diff --git a/musicxml/src/elements/technical.rs b/musicxml/src/elements/technical.rs index 0f00730..5afe88d 100644 --- a/musicxml/src/elements/technical.rs +++ b/musicxml/src/elements/technical.rs @@ -9,14 +9,14 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Technical] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TechnicalAttributes { /// Specifies an ID that is unique to the entire document. pub id: Option, } /// The [TechnicalContents] element specifies all possible options available for use in a [Technical] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub enum TechnicalContents { /// The [UpBow] element represents the symbol for up-bow. #[rename("up-bow")] @@ -97,7 +97,7 @@ pub enum TechnicalContents { } /// The [Technical] element groups together technical indications that give performance information for specific instruments. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Technical { /// Element-specific attributes pub attributes: TechnicalAttributes, diff --git a/musicxml/src/elements/tenths.rs b/musicxml/src/elements/tenths.rs index cd935f1..c9cff3e 100644 --- a/musicxml/src/elements/tenths.rs +++ b/musicxml/src/elements/tenths.rs @@ -5,7 +5,7 @@ use musicxml_macros::*; /// The [Tenths] element contains the number of tenths that correspond to the given number of millimeters within the [Scaling][super::Scaling] element formula. /// /// Setting this to 40 allows the [Millimeters][super::Millimeters] element to specify the size of a 5-line staff. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Tenths { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/tenuto.rs b/musicxml/src/elements/tenuto.rs index 64866b1..992da06 100644 --- a/musicxml/src/elements/tenuto.rs +++ b/musicxml/src/elements/tenuto.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Tenuto] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TenutoAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct TenutoAttributes { /// The [Tenuto] element indicates a tenuto line symbol. /// /// ![Tenuto](https://hedgetechllc.github.io/musicxml/musicxml/elements/tenuto.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Tenuto { /// Element-specific attributes pub attributes: TenutoAttributes, diff --git a/musicxml/src/elements/text.rs b/musicxml/src/elements/text.rs index b7fb8fc..7f20a9f 100644 --- a/musicxml/src/elements/text.rs +++ b/musicxml/src/elements/text.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [TextAttributes] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TextAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct TextAttributes { /// The [Text] element represents a syllable or portion of a syllable for lyric text underlay. /// /// A hyphen in the element content should only be used for an actual hyphenated word. -#[derive(Debug, Default, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Text { /// Element-specific attributes pub attributes: TextAttributes, diff --git a/musicxml/src/elements/thumb_position.rs b/musicxml/src/elements/thumb_position.rs index 4260666..74f21d1 100644 --- a/musicxml/src/elements/thumb_position.rs +++ b/musicxml/src/elements/thumb_position.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [ThumbPosition] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ThumbPositionAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct ThumbPositionAttributes { /// ![ThumbPosition](https://hedgetechllc.github.io/musicxml/musicxml/elements/thumb-position.png) /// /// This is a circle with a line, where the line does not come within the circle. It is distinct from the [SnapPizzicato][super::SnapPizzicato] symbol, where the line comes inside the circle. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("thumb-position")] pub struct ThumbPosition { /// Element-specific attributes diff --git a/musicxml/src/elements/tie.rs b/musicxml/src/elements/tie.rs index d9a8380..fc7cd82 100644 --- a/musicxml/src/elements/tie.rs +++ b/musicxml/src/elements/tie.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Tie] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TieAttributes { /// Indicates if this is the start or stop of the tie. pub r#type: StartStop, @@ -16,7 +16,7 @@ pub struct TieAttributes { /// The [Tie] element indicates that a tie begins or ends with this note. /// /// The [Tie] element indicates sound; the [Tied][super::Tied] element indicates notation. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Tie { /// Element-specific attributes pub attributes: TieAttributes, diff --git a/musicxml/src/elements/tied.rs b/musicxml/src/elements/tied.rs index 1d118c8..68c3198 100644 --- a/musicxml/src/elements/tied.rs +++ b/musicxml/src/elements/tied.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Tied] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TiedAttributes { /// Indicates if this is the start, stop, or continuation of a tie, or if this is a tie indicating that an instrument should be undamped. pub r#type: StartStopContinue, @@ -79,7 +79,7 @@ pub struct TiedAttributes { /// /// Normal ties need only two bezier points: one associated with the start of the tie, the other with the stop. Ties divided over system breaks can specify /// additional bezier data at [Tied] elements with a continue type. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Tied { /// Element-specific attributes pub attributes: TiedAttributes, diff --git a/musicxml/src/elements/time.rs b/musicxml/src/elements/time.rs index 3d7f773..e0dc3aa 100644 --- a/musicxml/src/elements/time.rs +++ b/musicxml/src/elements/time.rs @@ -8,7 +8,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Time] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TimeAttributes { /// Indicates the color of an element. pub color: Option, @@ -67,7 +67,7 @@ pub struct TimeAttributes { } /// The [TimeBeatContents] element specifies the number of beats in a measure and the beat unit. -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct TimeBeatContents { /// The [Beats] element specifies the number of beats in a measure. pub beats: Beats, @@ -76,7 +76,7 @@ pub struct TimeBeatContents { } /// Contents of the [Time] element. -#[derive(Debug, Default, PartialEq, Eq)] +#[derive(Debug, Default, PartialEq, Eq, Clone)] pub struct TimeContents { /// The [TimeBeatContents] element specifies the number of beats in a measure and the beat unit. pub beats: Vec, @@ -143,7 +143,7 @@ impl ContentSerializer for TimeContents { /// /// The `print_object` attribute allows a time signature to be specified but not printed, as is the case for excerpts from the middle of a score. /// The value is "yes" if not present. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Time { /// Element-specific attributes pub attributes: TimeAttributes, diff --git a/musicxml/src/elements/time_modification.rs b/musicxml/src/elements/time_modification.rs index b9b56dd..c752868 100644 --- a/musicxml/src/elements/time_modification.rs +++ b/musicxml/src/elements/time_modification.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [TimeModification] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct TimeModificationContents { /// The [ActualNotes] element specifies the number of notes in the tuplet. pub actual_notes: ActualNotes, @@ -21,7 +21,7 @@ pub struct TimeModificationContents { /// A [TimeModification] element shows how the cumulative, sounding effect of tuplets and double-note tremolos compare to the written /// note type represented by the [Type][super::Type] and [Dot][super::Dot] elements. Nested tuplets and other notations that use more detailed /// information need both the [TimeModification] and [Tuplet][super::Tuplet] elements to be represented accurately. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("time-modification")] pub struct TimeModification { /// Element-specific attributes diff --git a/musicxml/src/elements/time_relation.rs b/musicxml/src/elements/time_relation.rs index 603bdeb..b06c47f 100644 --- a/musicxml/src/elements/time_relation.rs +++ b/musicxml/src/elements/time_relation.rs @@ -4,7 +4,7 @@ use musicxml_macros::*; /// The [TimeRelation] element indicates the symbol used to represent the interchangeable aspect of dual time signatures, /// as specified in the [TimeRelation][crate::datatypes::TimeRelation] type. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("time-relation")] pub struct TimeRelation { /// Element-specific attributes diff --git a/musicxml/src/elements/timpani.rs b/musicxml/src/elements/timpani.rs index 5ba00bc..8280084 100644 --- a/musicxml/src/elements/timpani.rs +++ b/musicxml/src/elements/timpani.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Timpani] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TimpaniAttributes { /// Distinguishes different SMuFL stylistic alternates. pub smufl: Option, @@ -13,7 +13,7 @@ pub struct TimpaniAttributes { /// The [Timpani] element represents the timpani pictogram. /// /// ![Timpani](https://hedgetechllc.github.io/musicxml/musicxml/elements/timpani.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Timpani { /// Element-specific attributes pub attributes: TimpaniAttributes, diff --git a/musicxml/src/elements/toe.rs b/musicxml/src/elements/toe.rs index 73e6084..1bf7812 100644 --- a/musicxml/src/elements/toe.rs +++ b/musicxml/src/elements/toe.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Toe] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct ToeAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct ToeAttributes { /// The [Toe] element is used with organ pedals. /// /// ![Toe](https://hedgetechllc.github.io/musicxml/musicxml/elements/toe.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Toe { /// Element-specific attributes pub attributes: ToeAttributes, diff --git a/musicxml/src/elements/top_margin.rs b/musicxml/src/elements/top_margin.rs index c85fa93..4c86246 100644 --- a/musicxml/src/elements/top_margin.rs +++ b/musicxml/src/elements/top_margin.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [TopMargin] element specifies the top page margin in tenths. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("top-margin")] pub struct TopMargin { /// Element-specific attributes diff --git a/musicxml/src/elements/top_system_distance.rs b/musicxml/src/elements/top_system_distance.rs index 4d36cb5..6f74978 100644 --- a/musicxml/src/elements/top_system_distance.rs +++ b/musicxml/src/elements/top_system_distance.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// The [TopSystemDistance] is measured from the page's top margin to the top line of the first system. /// /// It is ignored for all but the first system on a page. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("top-system-distance")] pub struct TopSystemDistance { /// Element-specific attributes diff --git a/musicxml/src/elements/touching_pitch.rs b/musicxml/src/elements/touching_pitch.rs index 92fc95f..d6e1e8f 100644 --- a/musicxml/src/elements/touching_pitch.rs +++ b/musicxml/src/elements/touching_pitch.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The presence of the [TouchingPitch] element indicates this is the pitch at which the string is touched lightly to produce the harmonic. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("touching-pitch")] pub struct TouchingPitch { /// Element-specific attributes diff --git a/musicxml/src/elements/transpose.rs b/musicxml/src/elements/transpose.rs index 8b829a5..da50a93 100644 --- a/musicxml/src/elements/transpose.rs +++ b/musicxml/src/elements/transpose.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Transpose] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TransposeAttributes { /// Specifies an ID that is unique to the entire document. pub id: Option, @@ -15,7 +15,7 @@ pub struct TransposeAttributes { } /// Contents of the [Transpose] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct TransposeContents { /// The [Diatonic] element specifies the number of diatonic steps to transpose. pub diatonic: Option, @@ -30,7 +30,7 @@ pub struct TransposeContents { /// The [Transpose] element represents what must be added to a written pitch to get a correct sounding pitch. /// /// It is used for encoding parts for transposing instruments that are in written vs. concert pitch. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Transpose { /// Element-specific attributes pub attributes: TransposeAttributes, diff --git a/musicxml/src/elements/tremolo.rs b/musicxml/src/elements/tremolo.rs index 282a7e1..9e8531b 100644 --- a/musicxml/src/elements/tremolo.rs +++ b/musicxml/src/elements/tremolo.rs @@ -6,7 +6,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Tremolo] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TremoloAttributes { /// Indicates the color of an element. pub color: Option, @@ -61,7 +61,7 @@ pub struct TremoloAttributes { /// range for an unmeasured tremolo. It is ignored for other tremolo types. The SMuFL "buzzRoll" glyph is used if the attribute is missing. /// /// Using repeater beams for indicating tremolos is deprecated as of Version 3.0. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Tremolo { /// Element-specific attributes pub attributes: TremoloAttributes, diff --git a/musicxml/src/elements/trill_mark.rs b/musicxml/src/elements/trill_mark.rs index 554b6fd..157d31e 100644 --- a/musicxml/src/elements/trill_mark.rs +++ b/musicxml/src/elements/trill_mark.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [TrillMark] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TrillMarkAttributes { /// If yes, the trill accelerates during playback. It is no if not specified. pub accelerate: Option, @@ -59,7 +59,7 @@ pub struct TrillMarkAttributes { /// The [TrillMark] element represents the trill symbol. /// /// ![TrillMark](https://hedgetechllc.github.io/musicxml/musicxml/elements/trill-mark.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("trill-mark")] pub struct TrillMark { /// Element-specific attributes diff --git a/musicxml/src/elements/triple_tongue.rs b/musicxml/src/elements/triple_tongue.rs index 70e3e29..311771d 100644 --- a/musicxml/src/elements/triple_tongue.rs +++ b/musicxml/src/elements/triple_tongue.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [TripleTongue] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TripleTongueAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct TripleTongueAttributes { /// The [TripleTongue] element represents the triple tongue symbol (three dots arranged horizontally). /// /// ![TripleTongue](https://hedgetechllc.github.io/musicxml/musicxml/elements/triple-tongue.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("triple-tongue")] pub struct TripleTongue { /// Element-specific attributes diff --git a/musicxml/src/elements/tuning_alter.rs b/musicxml/src/elements/tuning_alter.rs index b985558..67f2473 100644 --- a/musicxml/src/elements/tuning_alter.rs +++ b/musicxml/src/elements/tuning_alter.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [TuningAlter] element is represented like the [Alter][super::Alter] element, with a different name to reflect its different function in string tuning. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("tuning-alter")] pub struct TuningAlter { /// Element-specific attributes diff --git a/musicxml/src/elements/tuning_octave.rs b/musicxml/src/elements/tuning_octave.rs index 0283c7c..9834d31 100644 --- a/musicxml/src/elements/tuning_octave.rs +++ b/musicxml/src/elements/tuning_octave.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [TuningOctave] element is represented like the [Octave][super::Octave] element, with a different name to reflect its different function in string tuning. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("tuning-octave")] pub struct TuningOctave { /// Element-specific attributes diff --git a/musicxml/src/elements/tuning_step.rs b/musicxml/src/elements/tuning_step.rs index 3732f1d..f4c8463 100644 --- a/musicxml/src/elements/tuning_step.rs +++ b/musicxml/src/elements/tuning_step.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [TuningStep] element is represented like the [Step][super::Step] element, with a different name to reflect its different function in string tuning. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] #[rename("tuning-step")] pub struct TuningStep { /// Element-specific attributes diff --git a/musicxml/src/elements/tuplet.rs b/musicxml/src/elements/tuplet.rs index d922faa..67ac62b 100644 --- a/musicxml/src/elements/tuplet.rs +++ b/musicxml/src/elements/tuplet.rs @@ -5,7 +5,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Tuplet] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TupletAttributes { /// Indicates if this is the start or stop of the tuplet. pub r#type: StartStop, @@ -45,7 +45,7 @@ pub struct TupletAttributes { } /// Contents of the [Tuplet] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct TupletContents { /// The [TupletActual] element specifies the number of notes in the tuplet. pub tuplet_actual: Option, @@ -61,7 +61,7 @@ pub struct TupletContents { /// Whereas a [TimeModification][super::TimeModification] element shows how the cumulative, sounding effect of tuplets and double-note tremolos compare /// to the written note type, the [Tuplet] element describes how this is displayed. The [Tuplet] element also provides more detailed representation information /// than the [TimeModification][super::TimeModification] element, and is needed to represent nested tuplets and other complex tuplets accurately. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Tuplet { /// Element-specific attributes pub attributes: TupletAttributes, diff --git a/musicxml/src/elements/tuplet_actual.rs b/musicxml/src/elements/tuplet_actual.rs index 8e269a0..5ae6209 100644 --- a/musicxml/src/elements/tuplet_actual.rs +++ b/musicxml/src/elements/tuplet_actual.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [TupletActual] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct TupletActualContents { /// The [TupletNumber] element specifies the number of notes in the tuplet. pub tuplet_number: Option, @@ -18,7 +18,7 @@ pub struct TupletActualContents { /// including number and note type (with dots). /// /// If any of these elements are absent, their values are based on the [TimeModification][super::TimeModification] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("tuplet-actual")] pub struct TupletActual { /// Element-specific attributes diff --git a/musicxml/src/elements/tuplet_dot.rs b/musicxml/src/elements/tuplet_dot.rs index 6312720..cbf025e 100644 --- a/musicxml/src/elements/tuplet_dot.rs +++ b/musicxml/src/elements/tuplet_dot.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [TupletDot] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TupletDotAttributes { /// Indicates the color of an element. pub color: Option, @@ -19,7 +19,7 @@ pub struct TupletDotAttributes { } /// The [TupletDot] element is used to specify dotted tuplet types. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("tuplet-dot")] pub struct TupletDot { /// Element-specific attributes diff --git a/musicxml/src/elements/tuplet_normal.rs b/musicxml/src/elements/tuplet_normal.rs index 61cb1b6..75a5c78 100644 --- a/musicxml/src/elements/tuplet_normal.rs +++ b/musicxml/src/elements/tuplet_normal.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [TupletNormal] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct TupletNormalContents { /// The [TupletNumber] element specifies the number of notes in the tuplet. pub tuplet_number: Option, @@ -18,7 +18,7 @@ pub struct TupletNormalContents { /// including number and note type (with dots). /// /// If any of these elements are absent, their values are based on the [TimeModification][super::TimeModification] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("tuplet-normal")] pub struct TupletNormal { /// Element-specific attributes diff --git a/musicxml/src/elements/tuplet_number.rs b/musicxml/src/elements/tuplet_number.rs index a23a713..838c09d 100644 --- a/musicxml/src/elements/tuplet_number.rs +++ b/musicxml/src/elements/tuplet_number.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [TupletNumber] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TupletNumberAttributes { /// Indicates the color of an element. pub color: Option, @@ -19,7 +19,7 @@ pub struct TupletNumberAttributes { } /// The [TupletNumber] element indicates the number of notes for this portion of the tuplet. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("tuplet-number")] pub struct TupletNumber { /// Element-specific attributes diff --git a/musicxml/src/elements/tuplet_type.rs b/musicxml/src/elements/tuplet_type.rs index 970af2e..d16736e 100644 --- a/musicxml/src/elements/tuplet_type.rs +++ b/musicxml/src/elements/tuplet_type.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [TupletType] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TupletTypeAttributes { /// Indicates the color of an element. pub color: Option, @@ -19,7 +19,7 @@ pub struct TupletTypeAttributes { } /// The [TupletType] element indicates the graphical note type of the notes for this portion of the tuplet. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("tuplet-type")] pub struct TupletType { /// Element-specific attributes diff --git a/musicxml/src/elements/turn.rs b/musicxml/src/elements/turn.rs index afbba6c..a5fb251 100644 --- a/musicxml/src/elements/turn.rs +++ b/musicxml/src/elements/turn.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Turn] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TurnAttributes { /// If yes, the trill accelerates during playback. It is no if not specified. pub accelerate: Option, @@ -61,7 +61,7 @@ pub struct TurnAttributes { /// The [Turn] element is the normal turn shape which goes up then down. /// /// ![Turn](https://hedgetechllc.github.io/musicxml/musicxml/elements/turn.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Turn { /// Element-specific attributes pub attributes: TurnAttributes, diff --git a/musicxml/src/elements/type.rs b/musicxml/src/elements/type.rs index 710f99a..dbd6bdb 100644 --- a/musicxml/src/elements/type.rs +++ b/musicxml/src/elements/type.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Type] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)] pub struct TypeAttributes { /// Specifies the symbol size to use for an editorial indication. If not specified, it is left to application defaults. pub size: Option, @@ -13,7 +13,7 @@ pub struct TypeAttributes { /// The [Type] element indicates the graphic note type. /// /// Values range from 1024th to maxima. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Type { /// Element-specific attributes pub attributes: TypeAttributes, diff --git a/musicxml/src/elements/unpitched.rs b/musicxml/src/elements/unpitched.rs index 09b1e6d..6a94b6d 100644 --- a/musicxml/src/elements/unpitched.rs +++ b/musicxml/src/elements/unpitched.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Unpitched] element. -#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)] pub struct UnpitchedContents { /// The [DisplayStep] element specifies the pitch step of the unpitched note. pub display_step: DisplayStep, @@ -18,7 +18,7 @@ pub struct UnpitchedContents { /// /// If the child elements are not present, the note is placed on the middle line of the staff. This is generally used with a one-line staff. /// Notes in percussion clef should always use an [Unpitched] element rather than a [Pitch][super::Pitch] element. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Unpitched { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/unstress.rs b/musicxml/src/elements/unstress.rs index d46f235..bfc48fa 100644 --- a/musicxml/src/elements/unstress.rs +++ b/musicxml/src/elements/unstress.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Unstress] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct UnstressAttributes { /// Indicates the color of an element. pub color: Option, @@ -44,7 +44,7 @@ pub struct UnstressAttributes { /// ![Unstress](https://hedgetechllc.github.io/musicxml/musicxml/elements/unstress.png) /// /// It is often notated using a u-shaped symbol. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Unstress { /// Element-specific attributes pub attributes: UnstressAttributes, diff --git a/musicxml/src/elements/up_bow.rs b/musicxml/src/elements/up_bow.rs index 12634fe..ac20a9e 100644 --- a/musicxml/src/elements/up_bow.rs +++ b/musicxml/src/elements/up_bow.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [UpBow] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct UpBowAttributes { /// Indicates the color of an element. pub color: Option, @@ -42,7 +42,7 @@ pub struct UpBowAttributes { /// The [UpBow] element represents the symbol that is used both for up-bowing on bowed instruments, and up-stroke on plucked instruments. /// /// ![UpBow](https://hedgetechllc.github.io/musicxml/musicxml/elements/up-bow.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("up-bow")] pub struct UpBow { /// Element-specific attributes diff --git a/musicxml/src/elements/vertical_turn.rs b/musicxml/src/elements/vertical_turn.rs index 214cc28..3d56041 100644 --- a/musicxml/src/elements/vertical_turn.rs +++ b/musicxml/src/elements/vertical_turn.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [VerticalTurn] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct VerticalTurnAttributes { /// If yes, the trill accelerates during playback. It is no if not specified. pub accelerate: Option, @@ -61,7 +61,7 @@ pub struct VerticalTurnAttributes { /// The [VerticalTurn] element has the turn symbol shape arranged vertically going from upper left to lower right. /// /// ![VerticalTurn](https://hedgetechllc.github.io/musicxml/musicxml/elements/vertical-turn.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("vertical-turn")] pub struct VerticalTurn { /// Element-specific attributes diff --git a/musicxml/src/elements/virtual_instrument.rs b/musicxml/src/elements/virtual_instrument.rs index feb4248..38243df 100644 --- a/musicxml/src/elements/virtual_instrument.rs +++ b/musicxml/src/elements/virtual_instrument.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [VirtualInstrument] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct VirtualInstrumentContents { /// The [VirtualLibrary] element specifies the virtual library used for the virtual instrument. pub virtual_library: Option, @@ -13,7 +13,7 @@ pub struct VirtualInstrumentContents { } /// The [VirtualInstrument] element defines a specific virtual instrument used for an instrument sound. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("virtual-instrument")] pub struct VirtualInstrument { /// Element-specific attributes diff --git a/musicxml/src/elements/virtual_library.rs b/musicxml/src/elements/virtual_library.rs index b062cd3..762ce6a 100644 --- a/musicxml/src/elements/virtual_library.rs +++ b/musicxml/src/elements/virtual_library.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [VirtualLibrary] element indicates the virtual instrument library name. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("virtual-library")] pub struct VirtualLibrary { /// Element-specific attributes diff --git a/musicxml/src/elements/virtual_name.rs b/musicxml/src/elements/virtual_name.rs index c2300ef..d00dc17 100644 --- a/musicxml/src/elements/virtual_name.rs +++ b/musicxml/src/elements/virtual_name.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [VirtualName] element indicates the library-specific name for the virtual instrument. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("virtual-name")] pub struct VirtualName { /// Element-specific attributes diff --git a/musicxml/src/elements/voice.rs b/musicxml/src/elements/voice.rs index 4a20ad1..f098d50 100644 --- a/musicxml/src/elements/voice.rs +++ b/musicxml/src/elements/voice.rs @@ -7,7 +7,7 @@ use musicxml_macros::*; /// ![Voice](https://hedgetechllc.github.io/musicxml/musicxml/elements/voice.png) /// /// The [Voice] element is used to distinguish between multiple voices in individual parts. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Voice { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/volume.rs b/musicxml/src/elements/volume.rs index d60f644..36477b6 100644 --- a/musicxml/src/elements/volume.rs +++ b/musicxml/src/elements/volume.rs @@ -6,7 +6,7 @@ use musicxml_macros::*; /// The [Volume] element value is a percentage of the maximum ranging from 0 to 100, with decimal values allowed. /// /// This corresponds to a scaling value for the MIDI 1.0 channel volume controller. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)] pub struct Volume { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/wait.rs b/musicxml/src/elements/wait.rs index a72d0c4..4dcb05e 100644 --- a/musicxml/src/elements/wait.rs +++ b/musicxml/src/elements/wait.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Wait] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct WaitAttributes { /// Restricts the [Wait] to apply to a single player. pub player: Option, @@ -17,7 +17,7 @@ pub struct WaitAttributes { /// /// This typically happens at the start of new sections or after a held note or indeterminate music. These waiting points cannot always be /// inferred reliably from the contents of the displayed score. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Wait { /// Element-specific attributes pub attributes: WaitAttributes, diff --git a/musicxml/src/elements/wavy_line.rs b/musicxml/src/elements/wavy_line.rs index e882440..6973506 100644 --- a/musicxml/src/elements/wavy_line.rs +++ b/musicxml/src/elements/wavy_line.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [WavyLine] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct WavyLineAttributes { /// Indicates if this is the start, stop, or continuation of the wavy line. The value should be continue whenever used within a [Barline][super::Barline] element. pub r#type: StartStopContinue, @@ -57,7 +57,7 @@ pub struct WavyLineAttributes { /// Wavy lines are one way to indicate trills and vibrato. /// /// ![WavyLine](https://hedgetechllc.github.io/musicxml/musicxml/elements/wavy-line.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("wavy-line")] pub struct WavyLine { /// Element-specific attributes diff --git a/musicxml/src/elements/wedge.rs b/musicxml/src/elements/wedge.rs index e3e220c..967ec0e 100644 --- a/musicxml/src/elements/wedge.rs +++ b/musicxml/src/elements/wedge.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Wedge] element. -#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct WedgeAttributes { /// The value is crescendo for the start of a wedge that is closed at the left side, diminuendo for the start of a wedge that is closed on the right side, and stop for the end of a wedge. pub r#type: WedgeType, @@ -49,7 +49,7 @@ pub struct WedgeAttributes { /// The [Wedge] element represents crescendo and diminuendo wedge symbols. /// /// The `line_type` attribute is solid if not specified. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Wedge { /// Element-specific attributes pub attributes: WedgeAttributes, diff --git a/musicxml/src/elements/with_bar.rs b/musicxml/src/elements/with_bar.rs index be6bf0d..8a48394 100644 --- a/musicxml/src/elements/with_bar.rs +++ b/musicxml/src/elements/with_bar.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [WithBar] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct WithBarAttributes { /// Indicates the color of an element. pub color: Option, @@ -43,7 +43,7 @@ pub struct WithBarAttributes { /// /// The content of the element indicates how this should be notated. Content values of "scoop" and "dip" refer to the Standard Music Font Layout (SMuFL) /// "guitarVibratoBarScoop" and "guitarVibratoBarDip" glyphs. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("with-bar")] pub struct WithBar { /// Element-specific attributes diff --git a/musicxml/src/elements/wood.rs b/musicxml/src/elements/wood.rs index 6061deb..aca4203 100644 --- a/musicxml/src/elements/wood.rs +++ b/musicxml/src/elements/wood.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Wood] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct WoodAttributes { /// Distinguishes different SMuFL stylistic alternates. pub smufl: Option, @@ -13,7 +13,7 @@ pub struct WoodAttributes { /// The [Wood] element represents pictograms for wood percussion instruments. /// /// ![Wood](https://hedgetechllc.github.io/musicxml/musicxml/elements/wood.png) -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Wood { /// Element-specific attributes pub attributes: WoodAttributes, diff --git a/musicxml/src/elements/word_font.rs b/musicxml/src/elements/word_font.rs index a01a0b1..70c8f61 100644 --- a/musicxml/src/elements/word_font.rs +++ b/musicxml/src/elements/word_font.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [WordFont] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct WordFontAttributes { /// A comma-separated list of font names. pub font_family: Option, @@ -17,7 +17,7 @@ pub struct WordFontAttributes { } /// The [WordFont] element represents the default values for the word font in the score. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("word-font")] pub struct WordFont { /// Element-specific attributes diff --git a/musicxml/src/elements/words.rs b/musicxml/src/elements/words.rs index 1b6c89e..0bdfb69 100644 --- a/musicxml/src/elements/words.rs +++ b/musicxml/src/elements/words.rs @@ -7,7 +7,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Attributes pertaining to the [Words] element. -#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)] pub struct WordsAttributes { /// Indicates the color of an element. pub color: Option, @@ -91,7 +91,7 @@ pub struct WordsAttributes { /// The [Words] element specifies a standard text direction. /// /// The `enclosure` attribute is none if not specified. Left justification is used if not specified. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Words { /// Element-specific attributes pub attributes: WordsAttributes, diff --git a/musicxml/src/elements/work.rs b/musicxml/src/elements/work.rs index aae2fbd..11e3c84 100644 --- a/musicxml/src/elements/work.rs +++ b/musicxml/src/elements/work.rs @@ -4,7 +4,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// Contents of the [Work] element. -#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)] +#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)] pub struct WorkContents { /// The [WorkNumber] element specifies the number of the work. pub work_number: Option, @@ -17,7 +17,7 @@ pub struct WorkContents { /// Works are optionally identified by number and title. /// /// The [Work] element also may indicate a link to the [Opus] document that composes multiple scores into a collection. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] pub struct Work { /// Element-specific attributes pub attributes: (), diff --git a/musicxml/src/elements/work_number.rs b/musicxml/src/elements/work_number.rs index db31723..ca9a0a4 100644 --- a/musicxml/src/elements/work_number.rs +++ b/musicxml/src/elements/work_number.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [WorkNumber] element specifies the number of a work, such as its opus number. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("work-number")] pub struct WorkNumber { /// Element-specific attributes diff --git a/musicxml/src/elements/work_title.rs b/musicxml/src/elements/work_title.rs index 295e96c..81a6891 100644 --- a/musicxml/src/elements/work_title.rs +++ b/musicxml/src/elements/work_title.rs @@ -3,7 +3,7 @@ use musicxml_internal::*; use musicxml_macros::*; /// The [WorkTitle] element specifies the title of a work, not including its opus or other work number. -#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)] +#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)] #[rename("work-title")] pub struct WorkTitle { /// Element-specific attributes