#[no_mangle]
pub unsafe extern "C" fn vs_iter_destroy(
    iter: *mut VSIter<'_, *const c_void>
) -> u8
Expand description

Free VSIter (can happen after VoluntaryServitude’s free)

Returns 1 if pointer to VoluntaryServitude is NULL

Returns 0 otherwise

Warning: UB if pointer to VSIter is invalid

Rust

use std::ptr::null_mut;
use voluntary_servitude::ffi::*;

unsafe {
    let vs = vs_new();
    let iter = vs_iter(vs);
    assert_eq!(vs_destroy(vs), 0);
    assert_eq!(vs_iter_destroy(iter), 0);

    // Returns 1 on NULL pointer
    assert_eq!(vs_iter_destroy(null_mut()), 1);
}

C

#include<assert.h>
#include "../include/voluntary_servitude.h"

int main(int argc, char **argv) {
    vs_t * vs = vs_new();
    const unsigned int data[3] = { 4, 9, 8 };
    assert(vs_append(vs, (void *) data) == 0);
    assert(vs_append(vs, (void *) (data + 1)) == 0);
    assert(vs_append(vs, (void *) (data + 2)) == 0);

    vs_iter_t * iter = vs_iter(vs);
    assert(vs_iter_len(iter) == 3);
    assert(vs_iter_destry(iter) == 0);

    assert(vs_destroy(vs) == 0);

    // Returns 1 on NULL pointer
    assert(vs_iter_destroy(NULL) == 1);
    return 0;
}