Add SubAssign, Add and Sub to Pixel trait requirements

This commit is contained in:
cdo committed 2026-10-26 11:42:36 +00:00
1 parent e75d56e23a
commit 26a03c002a
2 files changed
+61 -31

No files matched your search

+55 -31
View File
@@ -26,43 +26,67 @@ fn impl_pixel(name: syn::Ident, fields: Vec<syn::Ident>) -> TokenStream {
}
}
impl std::ops::MulAssign<f32> for #name {
fn mul_assign(&mut self, scalar: f32) {
#( self.#fields *= scalar; )*
}
}
impl std::ops::SubAssign for #name {
fn sub_assign(&mut self, other: Self) {
#( self.#fields -= other.#fields; )*
}
}
impl std::ops::DivAssign<f32> for #name {
fn div_assign(&mut self, scalar: f32) {
#( self.#fields /= scalar; )*
}
}
impl std::ops::MulAssign<f32> for #name {
fn mul_assign(&mut self, scalar: f32) {
#( self.#fields *= scalar; )*
}
}
impl std::ops::Mul<f32> for #name {
type Output = Self;
impl std::ops::DivAssign<f32> for #name {
fn div_assign(&mut self, scalar: f32) {
#( self.#fields /= scalar; )*
}
}
fn mul(mut self, scalar: f32) -> Self {
self *= scalar;
self
}
}
impl std::ops::Add for #name {
type Output = Self;
impl std::ops::Div<f32> for #name {
type Output = Self;
fn add(mut self, other: Self) -> Self {
self += other;
self
}
}
fn div(mut self, scalar: f32) -> Self {
self /= scalar;
self
}
}
impl std::ops::Sub for #name {
type Output = Self;
impl std::default::Default for #name {
fn default() -> Self {
Self {
#( #fields: Default::default(), )*
}
}
}
fn sub(mut self, other: Self) -> Self {
self -= other;
self
}
}
impl std::ops::Mul<f32> for #name {
type Output = Self;
fn mul(mut self, scalar: f32) -> Self {
self *= scalar;
self
}
}
impl std::ops::Div<f32> for #name {
type Output = Self;
fn div(mut self, scalar: f32) -> Self {
self /= scalar;
self
}
}
impl std::default::Default for #name {
fn default() -> Self {
Self {
#( #fields: Default::default(), )*
}
}
}
}
.into()
}