parker wanted associated type
parent
c67d9294d2
commit
ce53aace34
|
@ -19,40 +19,42 @@ pub struct Bruh {
|
||||||
weights_capacity: usize,
|
weights_capacity: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_bruh(result: Result<ShapiroWilkTest, ShapiroWilkError>) -> Bruh {
|
impl Bruh {
|
||||||
match result {
|
pub fn from_result(result: Result<ShapiroWilkTest, ShapiroWilkError>) -> Self {
|
||||||
Ok(results) => {
|
match result {
|
||||||
let (weights, weights_len, weights_capacity) = {
|
Ok(results) => {
|
||||||
let ptr = results.weights.as_ptr();
|
let (weights, weights_len, weights_capacity) = {
|
||||||
let len = results.weights.len();
|
let ptr = results.weights.as_ptr();
|
||||||
let capacity = results.weights.capacity();
|
let len = results.weights.len();
|
||||||
|
let capacity = results.weights.capacity();
|
||||||
|
|
||||||
std::mem::forget(results.weights);
|
std::mem::forget(results.weights);
|
||||||
|
|
||||||
(std::ptr::NonNull::new(ptr.cast_mut()), len, capacity)
|
(std::ptr::NonNull::new(ptr.cast_mut()), len, capacity)
|
||||||
};
|
};
|
||||||
|
|
||||||
Bruh {
|
Bruh {
|
||||||
error: match results.status {
|
error: match results.status {
|
||||||
ShapiroWilkStatus::Ok => 0,
|
ShapiroWilkStatus::Ok => 0,
|
||||||
ShapiroWilkStatus::TooMany => 1,
|
ShapiroWilkStatus::TooMany => 1,
|
||||||
},
|
},
|
||||||
estimate: results.estimate,
|
estimate: results.estimate,
|
||||||
p_value: results.p_value,
|
p_value: results.p_value,
|
||||||
weights,
|
weights,
|
||||||
weights_capacity,
|
weights_capacity,
|
||||||
weights_len,
|
weights_len,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
Err(error) => {
|
||||||
Err(error) => {
|
let error = match error {
|
||||||
let error = match error {
|
ShapiroWilkError::TooFew => -1,
|
||||||
ShapiroWilkError::TooFew => -1,
|
ShapiroWilkError::NoDifference => -2,
|
||||||
ShapiroWilkError::NoDifference => -2,
|
ShapiroWilkError::CannotMakeDistribution => -3,
|
||||||
ShapiroWilkError::CannotMakeDistribution => -3,
|
};
|
||||||
};
|
Bruh {
|
||||||
Bruh {
|
error,
|
||||||
error,
|
..Default::default()
|
||||||
..Default::default()
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,19 +67,19 @@ fn create_bruh(result: Result<ShapiroWilkTest, ShapiroWilkError>) -> Bruh {
|
||||||
pub extern "C-unwind" fn willbert(data: *const f64, len: usize) -> Bruh {
|
pub extern "C-unwind" fn willbert(data: *const f64, len: usize) -> Bruh {
|
||||||
let slice = unsafe { std::slice::from_raw_parts(data, len) };
|
let slice = unsafe { std::slice::from_raw_parts(data, len) };
|
||||||
let result = ShapiroWilkTest::new_sorted(slice);
|
let result = ShapiroWilkTest::new_sorted(slice);
|
||||||
create_bruh(result)
|
Bruh::from_result(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C-unwind" fn willbert_unsorted(data: *mut f64, len: usize) -> Bruh {
|
pub extern "C-unwind" fn willbert_unsorted(data: *mut f64, len: usize) -> Bruh {
|
||||||
let slice = unsafe { std::slice::from_raw_parts_mut(data, len) };
|
let slice = unsafe { std::slice::from_raw_parts_mut(data, len) };
|
||||||
let result = ShapiroWilkTest::new(slice);
|
let result = ShapiroWilkTest::new(slice);
|
||||||
create_bruh(result)
|
Bruh::from_result(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C-unwind" fn willbert_unsorted_copy(data: *const f64, len: usize) -> Bruh {
|
pub extern "C-unwind" fn willbert_unsorted_copy(data: *const f64, len: usize) -> Bruh {
|
||||||
let slice = unsafe { std::slice::from_raw_parts(data, len) };
|
let slice = unsafe { std::slice::from_raw_parts(data, len) };
|
||||||
let result = ShapiroWilkTest::new_copy(slice);
|
let result = ShapiroWilkTest::new_copy(slice);
|
||||||
create_bruh(result)
|
Bruh::from_result(result)
|
||||||
}
|
}
|
Loading…
Reference in New Issue