From 384b43c203bf0b3f622a1af92af87229b02a0d22 Mon Sep 17 00:00:00 2001
From: Jonathan Wilson <jonathandw414@gmail.com>
Date: Sat, 9 Dec 2023 21:30:22 +0000
Subject: [PATCH 01/10] storagebuffercontent and uniformbuffercontent traits

---
 src/core/buffers.rs | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/src/core/buffers.rs b/src/core/buffers.rs
index 7720dac..ced97a2 100644
--- a/src/core/buffers.rs
+++ b/src/core/buffers.rs
@@ -315,3 +315,33 @@ impl<B: BufferRef> DynamicUniformBuffer<B> {
         self.inner.create()
     }
 }
+
+trait StorageBufferContent {
+    fn buffer_content(&self) -> Vec<u8>;
+}
+
+impl<T> StorageBufferContent for T
+where
+    T: ShaderType + WriteInto,
+{
+    fn buffer_content(&self) -> Vec<u8> {
+        let mut buffer = StorageBuffer::new(Vec::new());
+        buffer.write(self).unwrap();
+        buffer.into_inner()
+    }
+}
+
+trait UniformBufferContent {
+    fn buffer_content(&self) -> Vec<u8>;
+}
+
+impl<T> UniformBufferContent for T
+where
+    T: ShaderType + WriteInto,
+{
+    fn buffer_content(&self) -> Vec<u8> {
+        let mut buffer = UniformBuffer::new(Vec::new());
+        buffer.write(self).unwrap();
+        buffer.into_inner()
+    }
+}

From 477570284ec97940995d5c4bb606e3291a5399c1 Mon Sep 17 00:00:00 2001
From: Jonathan Wilson <jonathandw414@gmail.com>
Date: Sat, 9 Dec 2023 21:34:58 +0000
Subject: [PATCH 02/10] pub

---
 src/core/buffers.rs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/core/buffers.rs b/src/core/buffers.rs
index ced97a2..c1d58a1 100644
--- a/src/core/buffers.rs
+++ b/src/core/buffers.rs
@@ -316,7 +316,7 @@ impl<B: BufferRef> DynamicUniformBuffer<B> {
     }
 }
 
-trait StorageBufferContent {
+pub trait StorageBufferContent {
     fn buffer_content(&self) -> Vec<u8>;
 }
 
@@ -331,7 +331,7 @@ where
     }
 }
 
-trait UniformBufferContent {
+pub trait UniformBufferContent {
     fn buffer_content(&self) -> Vec<u8>;
 }
 

From 74d692410253a91bf7448ee72702ed09c4c5748a Mon Sep 17 00:00:00 2001
From: Jonathan Wilson <jonathandw414@gmail.com>
Date: Sat, 9 Dec 2023 21:47:14 +0000
Subject: [PATCH 03/10] method name change

---
 src/core/buffers.rs | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/core/buffers.rs b/src/core/buffers.rs
index c1d58a1..67ce5df 100644
--- a/src/core/buffers.rs
+++ b/src/core/buffers.rs
@@ -317,14 +317,14 @@ impl<B: BufferRef> DynamicUniformBuffer<B> {
 }
 
 pub trait StorageBufferContent {
-    fn buffer_content(&self) -> Vec<u8>;
+    fn storage_buffer_content(&self) -> Vec<u8>;
 }
 
 impl<T> StorageBufferContent for T
 where
     T: ShaderType + WriteInto,
 {
-    fn buffer_content(&self) -> Vec<u8> {
+    fn storage_buffer_content(&self) -> Vec<u8> {
         let mut buffer = StorageBuffer::new(Vec::new());
         buffer.write(self).unwrap();
         buffer.into_inner()
@@ -332,14 +332,14 @@ where
 }
 
 pub trait UniformBufferContent {
-    fn buffer_content(&self) -> Vec<u8>;
+    fn uniform_buffer_content(&self) -> Vec<u8>;
 }
 
 impl<T> UniformBufferContent for T
 where
     T: ShaderType + WriteInto,
 {
-    fn buffer_content(&self) -> Vec<u8> {
+    fn uniform_buffer_content(&self) -> Vec<u8> {
         let mut buffer = UniformBuffer::new(Vec::new());
         buffer.write(self).unwrap();
         buffer.into_inner()

From 8cfa2ec37436f25e958a3323a8cb102bb1cf5ea8 Mon Sep 17 00:00:00 2001
From: Jonathan Wilson <jonathandw414@gmail.com>
Date: Sat, 9 Dec 2023 22:17:31 +0000
Subject: [PATCH 04/10] grouped

---
 src/core/buffers.rs | 14 +++-----------
 src/lib.rs          |  4 ++--
 2 files changed, 5 insertions(+), 13 deletions(-)

diff --git a/src/core/buffers.rs b/src/core/buffers.rs
index 67ce5df..0cd8a39 100644
--- a/src/core/buffers.rs
+++ b/src/core/buffers.rs
@@ -316,11 +316,12 @@ impl<B: BufferRef> DynamicUniformBuffer<B> {
     }
 }
 
-pub trait StorageBufferContent {
+pub trait BufferContent {
     fn storage_buffer_content(&self) -> Vec<u8>;
+    fn uniform_buffer_content(&self) -> Vec<u8>;
 }
 
-impl<T> StorageBufferContent for T
+impl<T> BufferContent for T
 where
     T: ShaderType + WriteInto,
 {
@@ -329,16 +330,7 @@ where
         buffer.write(self).unwrap();
         buffer.into_inner()
     }
-}
-
-pub trait UniformBufferContent {
-    fn uniform_buffer_content(&self) -> Vec<u8>;
-}
 
-impl<T> UniformBufferContent for T
-where
-    T: ShaderType + WriteInto,
-{
     fn uniform_buffer_content(&self) -> Vec<u8> {
         let mut buffer = UniformBuffer::new(Vec::new());
         buffer.write(self).unwrap();
diff --git a/src/lib.rs b/src/lib.rs
index 266fd6b..c080192 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -102,8 +102,8 @@ mod types;
 mod impls;
 
 pub use crate::core::{
-    CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize, ShaderType,
-    StorageBuffer, UniformBuffer,
+    BufferContent, CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize,
+    ShaderType, StorageBuffer, UniformBuffer,
 };
 pub use types::runtime_sized_array::ArrayLength;
 

From 701284c2ec9363511f4d2b81d614c2bb265d24ab Mon Sep 17 00:00:00 2001
From: Jonathan Wilson <85790952+jonathandw743@users.noreply.github.com>
Date: Sun, 14 Apr 2024 20:21:47 +0100
Subject: [PATCH 05/10] BufferContent -> ToBufferContent

Co-authored-by: Teodor Tanasoaia <28601907+teoxoy@users.noreply.github.com>
---
 src/core/buffers.rs | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/core/buffers.rs b/src/core/buffers.rs
index 0cd8a39..6a49b0e 100644
--- a/src/core/buffers.rs
+++ b/src/core/buffers.rs
@@ -316,9 +316,9 @@ impl<B: BufferRef> DynamicUniformBuffer<B> {
     }
 }
 
-pub trait BufferContent {
-    fn storage_buffer_content(&self) -> Vec<u8>;
-    fn uniform_buffer_content(&self) -> Vec<u8>;
+pub trait ToBufferContent {
+    fn to_storage_buffer_content(&self) -> Vec<u8>;
+    fn to_uniform_buffer_content(&self) -> Vec<u8>;
 }
 
 impl<T> BufferContent for T

From c3a7e5229de15432079a30c4cdcfb39a5f560713 Mon Sep 17 00:00:00 2001
From: jonathandw743 <jonathandw414@gmail.com>
Date: Sun, 14 Apr 2024 20:26:09 +0100
Subject: [PATCH 06/10] rename BufferContent to ToBufferContent

---
 src/core/buffers.rs | 6 +++---
 src/lib.rs          | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/core/buffers.rs b/src/core/buffers.rs
index 6a49b0e..05833c9 100644
--- a/src/core/buffers.rs
+++ b/src/core/buffers.rs
@@ -321,17 +321,17 @@ pub trait ToBufferContent {
     fn to_uniform_buffer_content(&self) -> Vec<u8>;
 }
 
-impl<T> BufferContent for T
+impl<T> ToBufferContent for T
 where
     T: ShaderType + WriteInto,
 {
-    fn storage_buffer_content(&self) -> Vec<u8> {
+    fn to_storage_buffer_content(&self) -> Vec<u8> {
         let mut buffer = StorageBuffer::new(Vec::new());
         buffer.write(self).unwrap();
         buffer.into_inner()
     }
 
-    fn uniform_buffer_content(&self) -> Vec<u8> {
+    fn to_uniform_buffer_content(&self) -> Vec<u8> {
         let mut buffer = UniformBuffer::new(Vec::new());
         buffer.write(self).unwrap();
         buffer.into_inner()
diff --git a/src/lib.rs b/src/lib.rs
index c080192..b2127dc 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -102,7 +102,7 @@ mod types;
 mod impls;
 
 pub use crate::core::{
-    BufferContent, CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize,
+    ToBufferContent, CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize,
     ShaderType, StorageBuffer, UniformBuffer,
 };
 pub use types::runtime_sized_array::ArrayLength;

From 465a678b393058c5f25a01cde5487c262c8a357a Mon Sep 17 00:00:00 2001
From: jonathandw743 <jonathandw414@gmail.com>
Date: Sun, 14 Apr 2024 20:34:49 +0100
Subject: [PATCH 07/10] formatting

---
 src/lib.rs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib.rs b/src/lib.rs
index b2127dc..e64db08 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -102,8 +102,8 @@ mod types;
 mod impls;
 
 pub use crate::core::{
-    ToBufferContent, CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize,
-    ShaderType, StorageBuffer, UniformBuffer,
+    CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize, ShaderType,
+    StorageBuffer, ToBufferContent, UniformBuffer,
 };
 pub use types::runtime_sized_array::ArrayLength;
 

From 8a45bc7ea4e0c7996e770908402adaabec9fb59c Mon Sep 17 00:00:00 2001
From: jonathandw743 <jonathandw414@gmail.com>
Date: Wed, 11 Dec 2024 21:17:48 +0000
Subject: [PATCH 08/10] moved function into Buffer impls

---
 src/core/buffers.rs | 34 ++++++++++++----------------------
 1 file changed, 12 insertions(+), 22 deletions(-)

diff --git a/src/core/buffers.rs b/src/core/buffers.rs
index 05833c9..dafd4f3 100644
--- a/src/core/buffers.rs
+++ b/src/core/buffers.rs
@@ -16,6 +16,12 @@ impl<B> StorageBuffer<B> {
     pub fn into_inner(self) -> B {
         self.inner
     }
+
+    pub fn content_of<T: ShaderType + WriteInto>(item: &T) -> Result<Vec<u8>> {
+        let mut buffer = StorageBuffer::new(Vec::new());
+        buffer.write(item)?;
+        Ok(buffer.into_inner())
+    }
 }
 
 impl<B> From<B> for StorageBuffer<B> {
@@ -81,6 +87,12 @@ impl<B> UniformBuffer<B> {
     pub fn into_inner(self) -> B {
         self.inner.inner
     }
+
+    pub fn to_uniform_buffer_content<T: ShaderType + WriteInto>(item: &T) -> Result<Vec<u8>> {
+        let mut buffer = UniformBuffer::new(Vec::new());
+        buffer.write(item)?;
+        Ok(buffer.into_inner())
+    }
 }
 
 impl<B> From<B> for UniformBuffer<B> {
@@ -315,25 +327,3 @@ impl<B: BufferRef> DynamicUniformBuffer<B> {
         self.inner.create()
     }
 }
-
-pub trait ToBufferContent {
-    fn to_storage_buffer_content(&self) -> Vec<u8>;
-    fn to_uniform_buffer_content(&self) -> Vec<u8>;
-}
-
-impl<T> ToBufferContent for T
-where
-    T: ShaderType + WriteInto,
-{
-    fn to_storage_buffer_content(&self) -> Vec<u8> {
-        let mut buffer = StorageBuffer::new(Vec::new());
-        buffer.write(self).unwrap();
-        buffer.into_inner()
-    }
-
-    fn to_uniform_buffer_content(&self) -> Vec<u8> {
-        let mut buffer = UniformBuffer::new(Vec::new());
-        buffer.write(self).unwrap();
-        buffer.into_inner()
-    }
-}

From c0fc0c442ecfd8837bbe7f668552fa09ce3f0044 Mon Sep 17 00:00:00 2001
From: jonathandw743 <jonathandw414@gmail.com>
Date: Wed, 11 Dec 2024 21:25:56 +0000
Subject: [PATCH 09/10] works with Boxed slices

---
 src/core/buffers.rs | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/core/buffers.rs b/src/core/buffers.rs
index dafd4f3..b283585 100644
--- a/src/core/buffers.rs
+++ b/src/core/buffers.rs
@@ -17,8 +17,12 @@ impl<B> StorageBuffer<B> {
         self.inner
     }
 
-    pub fn content_of<T: ShaderType + WriteInto>(item: &T) -> Result<Vec<u8>> {
-        let mut buffer = StorageBuffer::new(Vec::new());
+    pub fn content_of<T, U>(item: &T) -> Result<U>
+    where
+        T: ShaderType + WriteInto,
+        U: BufferMut + Default,
+    {
+        let mut buffer = StorageBuffer::new(U::default());
         buffer.write(item)?;
         Ok(buffer.into_inner())
     }
@@ -88,8 +92,12 @@ impl<B> UniformBuffer<B> {
         self.inner.inner
     }
 
-    pub fn to_uniform_buffer_content<T: ShaderType + WriteInto>(item: &T) -> Result<Vec<u8>> {
-        let mut buffer = UniformBuffer::new(Vec::new());
+    pub fn content_of<T, U>(item: &T) -> Result<U>
+    where
+        T: ShaderType + WriteInto,
+        U: BufferMut + Default,
+    {
+        let mut buffer = UniformBuffer::new(U::default());
         buffer.write(item)?;
         Ok(buffer.into_inner())
     }

From 3a8738e0000539ab2b3d364d34528500c2a892df Mon Sep 17 00:00:00 2001
From: jonathandw743 <jonathandw414@gmail.com>
Date: Wed, 11 Dec 2024 21:27:07 +0000
Subject: [PATCH 10/10] removed pub use trait

---
 src/lib.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib.rs b/src/lib.rs
index e64db08..266fd6b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -103,7 +103,7 @@ mod impls;
 
 pub use crate::core::{
     CalculateSizeFor, DynamicStorageBuffer, DynamicUniformBuffer, ShaderSize, ShaderType,
-    StorageBuffer, ToBufferContent, UniformBuffer,
+    StorageBuffer, UniformBuffer,
 };
 pub use types::runtime_sized_array::ArrayLength;