Create a new Buffer from owned f64 data.
(data: Vec<f64>)
| 103 | impl Buffer { |
| 104 | /// Create a new Buffer from owned f64 data. |
| 105 | pub fn from_f64_vec(data: Vec<f64>) -> Self { |
| 106 | let len = data.len(); |
| 107 | let byte_vec = { |
| 108 | let mut v = std::mem::ManuallyDrop::new(data); |
| 109 | let ptr = v.as_mut_ptr() as *mut u8; |
| 110 | let byte_len = len * 8; |
| 111 | let byte_cap = v.capacity() * 8; |
| 112 | // SAFETY: f64 vec reinterpreted as u8 vec with correct ptr/len/cap. |
| 113 | unsafe { Vec::from_raw_parts(ptr, byte_len, byte_cap) } |
| 114 | }; |
| 115 | Buffer { |
| 116 | inner: Arc::new(BufferInner { |
| 117 | dtype: DType::F64, |
| 118 | shape: vec![len], |
| 119 | storage: Storage::Owned(byte_vec), |
| 120 | }), |
| 121 | } |
| 122 | } |
| 123 | |
| 124 | /// Create an empty buffer. |
| 125 | pub fn empty_f64() -> Self { |