Skip to main content

miniextendr_api/altrep_impl/
builtins.rs

1//! Built-in ALTREP class instantiations for `Vec<T>`, `Box<[T]>`, `Cow<T>`,
2//! and `Range<T>`.
3//!
4//! This file contains two crate-private declarative macros that are *not*
5//! `#[macro_export]`ed: `impl_builtin_altrep_family!` (emits the family impl
6//! plus linkme registration) and `impl_register_altrep_builtin!` (emits the
7//! `RegisterAltrep` impl with the cached `OnceLock` class handle).
8//!
9//! User crates do not invoke these macros directly — they call
10//! `impl_alt<family>_from_data!` plus a hand-rolled `RegisterAltrep` impl, or
11//! use the `#[derive(Altrep<Family>)]` proc-macro which emits the equivalent
12//! code.
13
14// region: Meta-macros for built-in ALTREP family instantiation
15//
16// `impl_builtin_altrep_family!` is a single declarative meta-macro that maps a
17// (type, family, dataptr-mode, sym) 4-tuple to the correct per-family
18// `impl_alt*_from_data!` call AND emits a linkme `MX_ALTREP_REGISTRATIONS` entry
19// so the class is registered at `R_init_*` time (no hand-enumerated list needed).
20//
21// The `$sym:ident` parameter is a unique snake_case identifier used as the suffix
22// for the `#[no_mangle]` registration fn and the linkme static.  It must be unique
23// across all call sites — naming convention: `<container>_<elem>` (e.g. `Vec_i32`,
24// `Box_bool`, `Cow_str`, `Range_i32`).
25//
26// ## Families
27//
28// | Token     | Delegates to               |
29// |-----------|----------------------------|
30// | `integer` | `impl_altinteger_from_data!` |
31// | `real`    | `impl_altreal_from_data!`    |
32// | `logical` | `impl_altlogical_from_data!` |
33// | `raw`     | `impl_altraw_from_data!`     |
34// | `string`  | `impl_altstring_from_data!`  |
35// | `complex` | `impl_altcomplex_from_data!` |
36//
37// ## Dataptr modes
38//
39// | Token         | Meaning                                                     |
40// |---------------|-------------------------------------------------------------|
41// | `dataptr`     | Type has a direct contiguous pointer (`RNativeType` backed) |
42// | `materializing` | No direct pointer; materializes into data2 on first access  |
43//
44// The `materializing` arm expands to `($ty, serialize)` in the underlying
45// per-family macro — the `($ty, serialize)` arm IS the materializing path
46// (it routes through `__impl_altvec_<family>_dataptr!` which provides a
47// trivial `AltrepDataptr<T>` returning `None`, falling through to data2
48// materialisation for bool→i32 conversion, Range compute-on-access, etc.).
49// Both arms preserve `const GUARD = AltrepGuard::RUnwind` — the default from
50// `__impl_altrep_base!`'s default and `with_serialize` arms.
51//
52// ## Corner cases NOT handled by this macro
53//
54// - `[T; N]` const-generic arrays: shared generic family generators and
55//   per-length class registration live in `arrays.rs`.
56// - `&'static [T]` static slices: unique lifetime + writable-assert pattern; left in
57//   the "Static slice implementations" region below.
58
59/// Generate ALTREP trait impls AND a linkme `MX_ALTREP_REGISTRATIONS` entry for a
60/// builtin type.
61///
62/// ## Arguments
63///
64/// - `$ty:ty` — the builtin container type (e.g. `Vec<i32>`, `Box<[f64]>`)
65/// - `$family:ident` — ALTREP family token: `integer`, `real`, `logical`, `raw`,
66///   `string`, or `complex`
67/// - `$mode:ident` — dataptr mode: `dataptr` or `materializing`
68/// - `$reg_fn:ident` — unique `#[no_mangle]` name for the registration fn
69///   (convention: `__mx_altrep_reg_builtin_<sym>`)
70/// - `$entry_ident:ident` — unique name for the linkme static
71///   (convention: `__MX_ALTREP_REG_ENTRY_builtin_<sym>`)
72///
73/// Both identifier arguments must be globally unique across all call sites.
74/// The registration fn is always emitted; the `#[distributed_slice]` attribute
75/// is guarded by `cfg_attr(not(target_arch = "wasm32"), ...)` so linkme's
76/// compile-error arm is not reached on wasm32 targets.
77#[doc(hidden)]
78macro_rules! impl_builtin_altrep_family {
79    // dataptr arm — type has a direct contiguous native pointer
80    ($ty:ty, integer, dataptr, $reg_fn:ident, $entry_ident:ident) => {
81        $crate::impl_altinteger_from_data!($ty, dataptr, serialize);
82        #[doc(hidden)]
83        #[unsafe(no_mangle)]
84        pub extern "C-unwind" fn $reg_fn() {
85            <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
86        }
87        #[cfg_attr(
88                    not(target_arch = "wasm32"),
89                    $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
90                    linkme(crate = $crate::linkme)
91                )]
92        #[doc(hidden)]
93        #[allow(non_upper_case_globals)]
94        static $entry_ident: $crate::registry::AltrepRegistration =
95            $crate::registry::AltrepRegistration {
96                register: $reg_fn,
97                symbol: stringify!($reg_fn),
98            };
99    };
100    ($ty:ty, real, dataptr, $reg_fn:ident, $entry_ident:ident) => {
101        $crate::impl_altreal_from_data!($ty, dataptr, serialize);
102        #[doc(hidden)]
103        #[unsafe(no_mangle)]
104        pub extern "C-unwind" fn $reg_fn() {
105            <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
106        }
107        #[cfg_attr(
108                    not(target_arch = "wasm32"),
109                    $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
110                    linkme(crate = $crate::linkme)
111                )]
112        #[doc(hidden)]
113        #[allow(non_upper_case_globals)]
114        static $entry_ident: $crate::registry::AltrepRegistration =
115            $crate::registry::AltrepRegistration {
116                register: $reg_fn,
117                symbol: stringify!($reg_fn),
118            };
119    };
120    ($ty:ty, logical, dataptr, $reg_fn:ident, $entry_ident:ident) => {
121        $crate::impl_altlogical_from_data!($ty, dataptr, serialize);
122        #[doc(hidden)]
123        #[unsafe(no_mangle)]
124        pub extern "C-unwind" fn $reg_fn() {
125            <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
126        }
127        #[cfg_attr(
128                    not(target_arch = "wasm32"),
129                    $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
130                    linkme(crate = $crate::linkme)
131                )]
132        #[doc(hidden)]
133        #[allow(non_upper_case_globals)]
134        static $entry_ident: $crate::registry::AltrepRegistration =
135            $crate::registry::AltrepRegistration {
136                register: $reg_fn,
137                symbol: stringify!($reg_fn),
138            };
139    };
140    ($ty:ty, raw, dataptr, $reg_fn:ident, $entry_ident:ident) => {
141        $crate::impl_altraw_from_data!($ty, dataptr, serialize);
142        #[doc(hidden)]
143        #[unsafe(no_mangle)]
144        pub extern "C-unwind" fn $reg_fn() {
145            <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
146        }
147        #[cfg_attr(
148                    not(target_arch = "wasm32"),
149                    $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
150                    linkme(crate = $crate::linkme)
151                )]
152        #[doc(hidden)]
153        #[allow(non_upper_case_globals)]
154        static $entry_ident: $crate::registry::AltrepRegistration =
155            $crate::registry::AltrepRegistration {
156                register: $reg_fn,
157                symbol: stringify!($reg_fn),
158            };
159    };
160    ($ty:ty, string, dataptr, $reg_fn:ident, $entry_ident:ident) => {
161        $crate::impl_altstring_from_data!($ty, dataptr, serialize);
162        #[doc(hidden)]
163        #[unsafe(no_mangle)]
164        pub extern "C-unwind" fn $reg_fn() {
165            <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
166        }
167        #[cfg_attr(
168                    not(target_arch = "wasm32"),
169                    $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
170                    linkme(crate = $crate::linkme)
171                )]
172        #[doc(hidden)]
173        #[allow(non_upper_case_globals)]
174        static $entry_ident: $crate::registry::AltrepRegistration =
175            $crate::registry::AltrepRegistration {
176                register: $reg_fn,
177                symbol: stringify!($reg_fn),
178            };
179    };
180    ($ty:ty, complex, dataptr, $reg_fn:ident, $entry_ident:ident) => {
181        $crate::impl_altcomplex_from_data!($ty, dataptr, serialize);
182        #[doc(hidden)]
183        #[unsafe(no_mangle)]
184        pub extern "C-unwind" fn $reg_fn() {
185            <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
186        }
187        #[cfg_attr(
188                    not(target_arch = "wasm32"),
189                    $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
190                    linkme(crate = $crate::linkme)
191                )]
192        #[doc(hidden)]
193        #[allow(non_upper_case_globals)]
194        static $entry_ident: $crate::registry::AltrepRegistration =
195            $crate::registry::AltrepRegistration {
196                register: $reg_fn,
197                symbol: stringify!($reg_fn),
198            };
199    };
200    // materializing arm — no direct native pointer; materializes on DATAPTR access.
201    // Used for: bool (bool→i32 via LGLSXP), Range<T> (compute-on-access).
202    // Guard remains RUnwind (the default) — the underlying macros do not change it.
203    //
204    // The materializing path is the *default* arm of `impl_alt<family>_from_data!`
205    // (the per-family `__impl_altvec_<family>_dataptr!` provides a trivial
206    // `AltrepDataptr<T>` returning `None`, falling through to materialise into
207    // data2). `serialize` is added to all builtin instantiations.
208    ($ty:ty, integer, materializing, $reg_fn:ident, $entry_ident:ident) => {
209        $crate::impl_altinteger_from_data!($ty, serialize);
210        #[doc(hidden)]
211        #[unsafe(no_mangle)]
212        pub extern "C-unwind" fn $reg_fn() {
213            <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
214        }
215        #[cfg_attr(
216                    not(target_arch = "wasm32"),
217                    $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
218                    linkme(crate = $crate::linkme)
219                )]
220        #[doc(hidden)]
221        #[allow(non_upper_case_globals)]
222        static $entry_ident: $crate::registry::AltrepRegistration =
223            $crate::registry::AltrepRegistration {
224                register: $reg_fn,
225                symbol: stringify!($reg_fn),
226            };
227    };
228    ($ty:ty, real, materializing, $reg_fn:ident, $entry_ident:ident) => {
229        $crate::impl_altreal_from_data!($ty, serialize);
230        #[doc(hidden)]
231        #[unsafe(no_mangle)]
232        pub extern "C-unwind" fn $reg_fn() {
233            <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
234        }
235        #[cfg_attr(
236                    not(target_arch = "wasm32"),
237                    $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
238                    linkme(crate = $crate::linkme)
239                )]
240        #[doc(hidden)]
241        #[allow(non_upper_case_globals)]
242        static $entry_ident: $crate::registry::AltrepRegistration =
243            $crate::registry::AltrepRegistration {
244                register: $reg_fn,
245                symbol: stringify!($reg_fn),
246            };
247    };
248    ($ty:ty, logical, materializing, $reg_fn:ident, $entry_ident:ident) => {
249        $crate::impl_altlogical_from_data!($ty, serialize);
250        #[doc(hidden)]
251        #[unsafe(no_mangle)]
252        pub extern "C-unwind" fn $reg_fn() {
253            <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
254        }
255        #[cfg_attr(
256                    not(target_arch = "wasm32"),
257                    $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
258                    linkme(crate = $crate::linkme)
259                )]
260        #[doc(hidden)]
261        #[allow(non_upper_case_globals)]
262        static $entry_ident: $crate::registry::AltrepRegistration =
263            $crate::registry::AltrepRegistration {
264                register: $reg_fn,
265                symbol: stringify!($reg_fn),
266            };
267    };
268    ($ty:ty, raw, materializing, $reg_fn:ident, $entry_ident:ident) => {
269        $crate::impl_altraw_from_data!($ty, serialize);
270        #[doc(hidden)]
271        #[unsafe(no_mangle)]
272        pub extern "C-unwind" fn $reg_fn() {
273            <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
274        }
275        #[cfg_attr(
276                    not(target_arch = "wasm32"),
277                    $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
278                    linkme(crate = $crate::linkme)
279                )]
280        #[doc(hidden)]
281        #[allow(non_upper_case_globals)]
282        static $entry_ident: $crate::registry::AltrepRegistration =
283            $crate::registry::AltrepRegistration {
284                register: $reg_fn,
285                symbol: stringify!($reg_fn),
286            };
287    };
288    ($ty:ty, string, materializing, $reg_fn:ident, $entry_ident:ident) => {
289        $crate::impl_altstring_from_data!($ty, serialize);
290        #[doc(hidden)]
291        #[unsafe(no_mangle)]
292        pub extern "C-unwind" fn $reg_fn() {
293            <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
294        }
295        #[cfg_attr(
296                    not(target_arch = "wasm32"),
297                    $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
298                    linkme(crate = $crate::linkme)
299                )]
300        #[doc(hidden)]
301        #[allow(non_upper_case_globals)]
302        static $entry_ident: $crate::registry::AltrepRegistration =
303            $crate::registry::AltrepRegistration {
304                register: $reg_fn,
305                symbol: stringify!($reg_fn),
306            };
307    };
308    ($ty:ty, complex, materializing, $reg_fn:ident, $entry_ident:ident) => {
309        $crate::impl_altcomplex_from_data!($ty, serialize);
310        #[doc(hidden)]
311        #[unsafe(no_mangle)]
312        pub extern "C-unwind" fn $reg_fn() {
313            <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
314        }
315        #[cfg_attr(
316                    not(target_arch = "wasm32"),
317                    $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
318                    linkme(crate = $crate::linkme)
319                )]
320        #[doc(hidden)]
321        #[allow(non_upper_case_globals)]
322        static $entry_ident: $crate::registry::AltrepRegistration =
323            $crate::registry::AltrepRegistration {
324                register: $reg_fn,
325                symbol: stringify!($reg_fn),
326            };
327    };
328}
329
330// region: Built-in implementations for standard types
331// These implementations are provided here to satisfy the orphan rules.
332// User crates can use these types directly with delegate_data.
333//
334// All types implement AltrepSerialize; serialize is injected by the meta-macro.
335// Guard: RUnwind (default from __impl_altrep_base!'s arms — not overridden).
336
337// Vec<T> — owned, heap-allocated contiguous storage.
338// bool uses `materializing` because bool is not RNativeType (R stores logicals as i32).
339impl crate::altrep_traits::Altrep for Vec<i32> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<i32> as crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<i32> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<i32> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<i32>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<i32> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <Vec<i32> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Vec<i32> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <Vec<i32> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <Vec<i32> as
                                crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <Vec<i32> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Vec<i32> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <Vec<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<i32> as
                        crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltInteger for Vec<i32> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <i32 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <Vec<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<i32> as
                crate::altrep_data::AltIntegerData>::elt(data,
            i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<i32>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <Vec<i32> as
                    crate::altrep_data::AltIntegerData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<i32> as
                        crate::altrep_data::AltIntegerData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<i32> as
                        crate::altrep_data::AltIntegerData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        match <Vec<i32> as
                    crate::altrep_data::AltIntegerData>::sum(data, narm) {
            ::core::option::Option::Some(s) => {
                if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
                    crate::SEXP::scalar_integer(s as i32)
                } else { crate::SEXP::scalar_real(s as f64) }
            }
            ::core::option::Option::None => crate::SEXP::null(),
        }
    }
    const HAS_MIN: bool = true;
    fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<i32> as
                        crate::altrep_data::AltIntegerData>::min(data,
                    narm).map(|m|
                    crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MAX: bool = true;
    fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<i32> as
                        crate::altrep_data::AltIntegerData>::max(data,
                    narm).map(|m|
                    crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
    }
}
impl crate::altrep_data::InferBase for Vec<i32> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Int;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altinteger_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Int)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe { crate::altrep_bridge::install_base::<Vec<i32>>(cls) };
        unsafe { crate::altrep_bridge::install_vec::<Vec<i32>>(cls) };
        unsafe { crate::altrep_bridge::install_int::<Vec<i32>>(cls) };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_i32() {
    <Vec<i32> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_i32:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_i32 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_i32,
            symbol: "__mx_altrep_reg_builtin_Vec_i32",
        }
    };impl_builtin_altrep_family!(
340    Vec<i32>,
341    integer,
342    dataptr,
343    __mx_altrep_reg_builtin_Vec_i32,
344    __MX_ALTREP_REG_ENTRY_builtin_Vec_i32
345);
346impl crate::altrep_traits::Altrep for Vec<f64> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<f64> as crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<f64> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<f64> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<f64>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<f64> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <Vec<f64> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Vec<f64> as
                            crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <Vec<f64> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <Vec<f64> as
                                crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <Vec<f64> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Vec<f64> as
                            crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<f64>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <Vec<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<f64> as
                        crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltReal for Vec<f64> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> f64 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <f64 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <Vec<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<f64> as
                crate::altrep_data::AltRealData>::elt(data, i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [f64]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<f64>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <Vec<f64> as
                    crate::altrep_data::AltRealData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<f64> as
                        crate::altrep_data::AltRealData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<f64> as
                        crate::altrep_data::AltRealData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<f64> as
                        crate::altrep_data::AltRealData>::sum(data,
                    narm).map(|s|
                    crate::SEXP::scalar_real(s)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MIN: bool = true;
    fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<f64> as
                        crate::altrep_data::AltRealData>::min(data,
                    narm).map(|m|
                    crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MAX: bool = true;
    fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<f64> as
                        crate::altrep_data::AltRealData>::max(data,
                    narm).map(|m|
                    crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
    }
}
impl crate::altrep_data::InferBase for Vec<f64> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Real;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altreal_class(class_name, pkg_name,
                    dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Real)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe { crate::altrep_bridge::install_base::<Vec<f64>>(cls) };
        unsafe { crate::altrep_bridge::install_vec::<Vec<f64>>(cls) };
        unsafe { crate::altrep_bridge::install_real::<Vec<f64>>(cls) };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_f64() {
    <Vec<f64> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_f64:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_f64 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_f64,
            symbol: "__mx_altrep_reg_builtin_Vec_f64",
        }
    };impl_builtin_altrep_family!(
347    Vec<f64>,
348    real,
349    dataptr,
350    __mx_altrep_reg_builtin_Vec_f64,
351    __MX_ALTREP_REG_ENTRY_builtin_Vec_f64
352);
353impl crate::altrep_traits::Altrep for Vec<crate::RLogical> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<crate::RLogical> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<crate::RLogical> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<crate::RLogical> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<crate::RLogical> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<crate::RLogical> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<crate::RLogical>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<crate::RLogical> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <Vec<crate::RLogical> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Vec<crate::RLogical> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <Vec<crate::RLogical> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <Vec<crate::RLogical> as
                                crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <Vec<crate::RLogical> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Vec<crate::RLogical> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <Vec<crate::RLogical> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<crate::RLogical> as
                        crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltLogical for Vec<crate::RLogical> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <crate::RLogical as
                            crate::RNativeType>::elt(data2, i.max(0)).to_i32();
        }
        let data =
            unsafe {
                <Vec<crate::RLogical> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let i = i.max(0) as usize;
        if let ::core::option::Option::Some(values) =
                <Vec<crate::RLogical> as
                        crate::altrep_data::AltLogicalData>::as_r_slice(data) {
            return values[i];
        }
        <Vec<crate::RLogical> as
                    crate::altrep_data::AltLogicalData>::elt(data, i).to_r_int()
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<i32>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<crate::RLogical> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <Vec<crate::RLogical> as
                    crate::altrep_data::AltLogicalData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<crate::RLogical> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<crate::RLogical> as
                        crate::altrep_data::AltLogicalData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<crate::RLogical> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<crate::RLogical> as
                        crate::altrep_data::AltLogicalData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<crate::RLogical> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        match <Vec<crate::RLogical> as
                    crate::altrep_data::AltLogicalData>::sum(data, narm) {
            ::core::option::Option::Some(s) => {
                if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
                    crate::SEXP::scalar_integer(s as i32)
                } else { crate::SEXP::scalar_real(s as f64) }
            }
            ::core::option::Option::None => crate::SEXP::null(),
        }
    }
}
impl crate::altrep_data::InferBase for Vec<crate::RLogical> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Logical;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altlogical_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Logical)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<Vec<crate::RLogical>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<Vec<crate::RLogical>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_lgl::<Vec<crate::RLogical>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_RLogical() {
    <Vec<crate::RLogical> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_RLogical:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_RLogical };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_RLogical,
            symbol: "__mx_altrep_reg_builtin_Vec_RLogical",
        }
    };impl_builtin_altrep_family!(
354    Vec<crate::RLogical>,
355    logical,
356    dataptr,
357    __mx_altrep_reg_builtin_Vec_RLogical,
358    __MX_ALTREP_REG_ENTRY_builtin_Vec_RLogical
359);
360impl crate::altrep_traits::Altrep for Vec<bool> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<bool> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<bool> as crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<bool> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<bool> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<bool> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<bool>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_data::AltrepDataptr<crate::RLogical> for Vec<bool> where  {
    fn dataptr(&mut self, _writable: bool)
        -> ::core::option::Option<*mut crate::RLogical> {
        ::core::option::Option::None
    }
}
impl crate::altrep_traits::AltVec for Vec<bool> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <Vec<bool> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Vec<bool> as
                            crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <Vec<bool> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <Vec<bool> as
                                crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <Vec<bool> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Vec<bool> as
                            crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe {
            crate::altrep_data::materialize_altrep_data2::<crate::RLogical>(x)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <Vec<bool> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<bool> as
                        crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltLogical for Vec<bool> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <crate::RLogical as
                            crate::RNativeType>::elt(data2, i.max(0)).to_i32();
        }
        let data =
            unsafe {
                <Vec<bool> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let i = i.max(0) as usize;
        if let ::core::option::Option::Some(values) =
                <Vec<bool> as
                        crate::altrep_data::AltLogicalData>::as_r_slice(data) {
            return values[i];
        }
        <Vec<bool> as
                    crate::altrep_data::AltLogicalData>::elt(data, i).to_r_int()
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<i32>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<bool> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <Vec<bool> as
                    crate::altrep_data::AltLogicalData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<bool> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<bool> as
                        crate::altrep_data::AltLogicalData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<bool> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<bool> as
                        crate::altrep_data::AltLogicalData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<bool> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        match <Vec<bool> as
                    crate::altrep_data::AltLogicalData>::sum(data, narm) {
            ::core::option::Option::Some(s) => {
                if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
                    crate::SEXP::scalar_integer(s as i32)
                } else { crate::SEXP::scalar_real(s as f64) }
            }
            ::core::option::Option::None => crate::SEXP::null(),
        }
    }
}
impl crate::altrep_data::InferBase for Vec<bool> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Logical;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altlogical_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Logical)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe { crate::altrep_bridge::install_base::<Vec<bool>>(cls) };
        unsafe { crate::altrep_bridge::install_vec::<Vec<bool>>(cls) };
        unsafe { crate::altrep_bridge::install_lgl::<Vec<bool>>(cls) };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_bool() {
    <Vec<bool> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_bool:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_bool };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_bool,
            symbol: "__mx_altrep_reg_builtin_Vec_bool",
        }
    };impl_builtin_altrep_family!(
361    Vec<bool>,
362    logical,
363    materializing,
364    __mx_altrep_reg_builtin_Vec_bool,
365    __MX_ALTREP_REG_ENTRY_builtin_Vec_bool
366);
367impl crate::altrep_traits::Altrep for Vec<u8> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<u8> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<u8> as crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<u8> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<u8> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<u8> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<u8>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<u8> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <Vec<u8> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Vec<u8> as
                            crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <Vec<u8> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <Vec<u8> as
                                crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <Vec<u8> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Vec<u8> as
                            crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<u8>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <Vec<u8> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<u8> as
                        crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltRaw for Vec<u8> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> u8 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <u8 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <Vec<u8> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<u8> as
                crate::altrep_data::AltRawData>::elt(data, i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [u8]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<u8>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<u8> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <Vec<u8> as
                    crate::altrep_data::AltRawData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
}
impl crate::altrep_data::InferBase for Vec<u8> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Raw;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altraw_class(class_name, pkg_name,
                    dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Raw)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe { crate::altrep_bridge::install_base::<Vec<u8>>(cls) };
        unsafe { crate::altrep_bridge::install_vec::<Vec<u8>>(cls) };
        unsafe { crate::altrep_bridge::install_raw::<Vec<u8>>(cls) };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_u8() {
    <Vec<u8> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_u8:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_u8 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_u8,
            symbol: "__mx_altrep_reg_builtin_Vec_u8",
        }
    };impl_builtin_altrep_family!(
368    Vec<u8>,
369    raw,
370    dataptr,
371    __mx_altrep_reg_builtin_Vec_u8,
372    __MX_ALTREP_REG_ENTRY_builtin_Vec_u8
373);
374impl crate::altrep_traits::Altrep for Vec<String> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<String> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<String> as crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<String> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<String> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<String> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<String>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<String> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            crate::altrep_impl::altstring_dataptr::<Vec<String>>(x, writable)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        let _ = x;
        ::core::ptr::null()
    }
}
impl crate::altrep_traits::AltString for Vec<String> where  {
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
        unsafe { crate::altrep_impl::altstring_elt::<Vec<String>>(x, i) }
    }
    const HAS_SET_ELT: bool = true;
    fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
        unsafe {
            crate::altrep_impl::altstring_set_elt::<Vec<String>>(x, i, v)
        }
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<String> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<String> as
                        crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<String> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<String> as
                        crate::altrep_data::AltStringData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
}
impl crate::altrep_data::InferBase for Vec<String> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altstring_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::String)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe { crate::altrep_bridge::install_base::<Vec<String>>(cls) };
        unsafe { crate::altrep_bridge::install_vec::<Vec<String>>(cls) };
        unsafe { crate::altrep_bridge::install_str::<Vec<String>>(cls) };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_String() {
    <Vec<String> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_String:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_String };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_String,
            symbol: "__mx_altrep_reg_builtin_Vec_String",
        }
    };impl_builtin_altrep_family!(
375    Vec<String>,
376    string,
377    dataptr,
378    __mx_altrep_reg_builtin_Vec_String,
379    __MX_ALTREP_REG_ENTRY_builtin_Vec_String
380);
381impl crate::altrep_traits::Altrep for Vec<Option<String>> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<Option<String>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<String>> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<Option<String>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<String>> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<Option<String>> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<Option<String>>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<Option<String>> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            crate::altrep_impl::altstring_dataptr::<Vec<Option<String>>>(x,
                writable)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        let _ = x;
        ::core::ptr::null()
    }
}
impl crate::altrep_traits::AltString for Vec<Option<String>> where  {
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
        unsafe {
            crate::altrep_impl::altstring_elt::<Vec<Option<String>>>(x, i)
        }
    }
    const HAS_SET_ELT: bool = true;
    fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
        unsafe {
            crate::altrep_impl::altstring_set_elt::<Vec<Option<String>>>(x, i,
                v)
        }
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<Option<String>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<String>> as
                        crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<Option<String>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<String>> as
                        crate::altrep_data::AltStringData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
}
impl crate::altrep_data::InferBase for Vec<Option<String>> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altstring_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::String)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<Vec<Option<String>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<Vec<Option<String>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_str::<Vec<Option<String>>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Option_String() {
    <Vec<Option<String>> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_String:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Option_String };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_Option_String,
            symbol: "__mx_altrep_reg_builtin_Vec_Option_String",
        }
    };impl_builtin_altrep_family!(
382    Vec<Option<String>>,
383    string,
384    dataptr,
385    __mx_altrep_reg_builtin_Vec_Option_String,
386    __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_String
387);
388// Cow string vectors — zero-copy from R, ALTREP output without copying back.
389// Serialize: Rf_mkCharLenCE hits R's CHARSXP cache (no string data copy for borrowed).
390// Unserialize: owns the decoded strings so the temporary R state can be collected.
391impl crate::altrep_traits::Altrep for Vec<std::borrow::Cow<'static, str>>
    where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<std::borrow::Cow<'static, str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<std::borrow::Cow<'static, str>> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<std::borrow::Cow<'static, str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<std::borrow::Cow<'static, str>> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<std::borrow::Cow<'static, str>> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<std::borrow::Cow<'static,
                                    str>>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<std::borrow::Cow<'static, str>>
    where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            crate::altrep_impl::altstring_dataptr::<Vec<std::borrow::Cow<'static,
                    str>>>(x, writable)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        let _ = x;
        ::core::ptr::null()
    }
}
impl crate::altrep_traits::AltString for Vec<std::borrow::Cow<'static, str>>
    where  {
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
        unsafe {
            crate::altrep_impl::altstring_elt::<Vec<std::borrow::Cow<'static,
                    str>>>(x, i)
        }
    }
    const HAS_SET_ELT: bool = true;
    fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
        unsafe {
            crate::altrep_impl::altstring_set_elt::<Vec<std::borrow::Cow<'static,
                    str>>>(x, i, v)
        }
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<std::borrow::Cow<'static, str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<std::borrow::Cow<'static, str>> as
                        crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<std::borrow::Cow<'static, str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<std::borrow::Cow<'static, str>> as
                        crate::altrep_data::AltStringData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
}
impl crate::altrep_data::InferBase for Vec<std::borrow::Cow<'static, str>>
    where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altstring_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::String)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<Vec<std::borrow::Cow<'static,
                    str>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<Vec<std::borrow::Cow<'static,
                    str>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_str::<Vec<std::borrow::Cow<'static,
                    str>>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Cow_str() {
    <Vec<std::borrow::Cow<'static, str>> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Cow_str:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Cow_str };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_Cow_str,
            symbol: "__mx_altrep_reg_builtin_Vec_Cow_str",
        }
    };impl_builtin_altrep_family!(
392    Vec<std::borrow::Cow<'static, str>>,
393    string,
394    dataptr,
395    __mx_altrep_reg_builtin_Vec_Cow_str,
396    __MX_ALTREP_REG_ENTRY_builtin_Vec_Cow_str
397);
398impl crate::altrep_traits::Altrep for
    Vec<Option<std::borrow::Cow<'static, str>>> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<Option<std::borrow::Cow<'static, str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<std::borrow::Cow<'static, str>>> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<Option<std::borrow::Cow<'static, str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<std::borrow::Cow<'static, str>>> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<Option<std::borrow::Cow<'static, str>>> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<Option<std::borrow::Cow<'static,
                                    str>>>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for
    Vec<Option<std::borrow::Cow<'static, str>>> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            crate::altrep_impl::altstring_dataptr::<Vec<Option<std::borrow::Cow<'static,
                    str>>>>(x, writable)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        let _ = x;
        ::core::ptr::null()
    }
}
impl crate::altrep_traits::AltString for
    Vec<Option<std::borrow::Cow<'static, str>>> where  {
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
        unsafe {
            crate::altrep_impl::altstring_elt::<Vec<Option<std::borrow::Cow<'static,
                    str>>>>(x, i)
        }
    }
    const HAS_SET_ELT: bool = true;
    fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
        unsafe {
            crate::altrep_impl::altstring_set_elt::<Vec<Option<std::borrow::Cow<'static,
                    str>>>>(x, i, v)
        }
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<Option<std::borrow::Cow<'static, str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<std::borrow::Cow<'static, str>>> as
                        crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<Option<std::borrow::Cow<'static, str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<std::borrow::Cow<'static, str>>> as
                        crate::altrep_data::AltStringData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
}
impl crate::altrep_data::InferBase for
    Vec<Option<std::borrow::Cow<'static, str>>> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altstring_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::String)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<Vec<Option<std::borrow::Cow<'static,
                    str>>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<Vec<Option<std::borrow::Cow<'static,
                    str>>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_str::<Vec<Option<std::borrow::Cow<'static,
                    str>>>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Option_Cow_str() {
    <Vec<Option<std::borrow::Cow<'static, str>>> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Cow_str:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Cow_str };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_Option_Cow_str,
            symbol: "__mx_altrep_reg_builtin_Vec_Option_Cow_str",
        }
    };impl_builtin_altrep_family!(
399    Vec<Option<std::borrow::Cow<'static, str>>>,
400    string,
401    dataptr,
402    __mx_altrep_reg_builtin_Vec_Option_Cow_str,
403    __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Cow_str
404);
405impl crate::altrep_traits::Altrep for Vec<crate::Rcomplex> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<crate::Rcomplex> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<crate::Rcomplex> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<crate::Rcomplex> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<crate::Rcomplex> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<crate::Rcomplex> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<crate::Rcomplex>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<crate::Rcomplex> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <Vec<crate::Rcomplex> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Vec<crate::Rcomplex> as
                            crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <Vec<crate::Rcomplex> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <Vec<crate::Rcomplex> as
                                crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <Vec<crate::Rcomplex> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Vec<crate::Rcomplex> as
                            crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe {
            crate::altrep_data::materialize_altrep_data2::<crate::Rcomplex>(x)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <Vec<crate::Rcomplex> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<crate::Rcomplex> as
                        crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltComplex for Vec<crate::Rcomplex> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::Rcomplex {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <crate::Rcomplex as
                        crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <Vec<crate::Rcomplex> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<crate::Rcomplex> as
                crate::altrep_data::AltComplexData>::elt(data,
            i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [crate::Rcomplex])
        -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<crate::Rcomplex>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<crate::Rcomplex> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <Vec<crate::Rcomplex> as
                    crate::altrep_data::AltComplexData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
}
impl crate::altrep_data::InferBase for Vec<crate::Rcomplex> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Complex;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altcomplex_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Complex)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<Vec<crate::Rcomplex>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<Vec<crate::Rcomplex>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_cplx::<Vec<crate::Rcomplex>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Rcomplex() {
    <Vec<crate::Rcomplex> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Rcomplex:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Rcomplex };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_Rcomplex,
            symbol: "__mx_altrep_reg_builtin_Vec_Rcomplex",
        }
    };impl_builtin_altrep_family!(
406    Vec<crate::Rcomplex>,
407    complex,
408    dataptr,
409    __mx_altrep_reg_builtin_Vec_Rcomplex,
410    __MX_ALTREP_REG_ENTRY_builtin_Vec_Rcomplex
411);
412
413// Range<T> — compute-on-access (no direct pointer); materializes into data2 INTSXP/REALSXP.
414impl crate::altrep_traits::Altrep for std::ops::Range<i32> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::ops::Range<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i32> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::ops::Range<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i32> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <std::ops::Range<i32> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<std::ops::Range<i32>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_data::AltrepDataptr<i32> for std::ops::Range<i32> where  {
    fn dataptr(&mut self, _writable: bool)
        -> ::core::option::Option<*mut i32> {
        ::core::option::Option::None
    }
}
impl crate::altrep_traits::AltVec for std::ops::Range<i32> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <std::ops::Range<i32> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::ops::Range<i32> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <std::ops::Range<i32> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <std::ops::Range<i32> as
                                crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <std::ops::Range<i32> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::ops::Range<i32> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <std::ops::Range<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i32> as
                        crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltInteger for std::ops::Range<i32> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <i32 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <std::ops::Range<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i32> as
                crate::altrep_data::AltIntegerData>::elt(data,
            i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<i32>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::ops::Range<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <std::ops::Range<i32> as
                    crate::altrep_data::AltIntegerData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <std::ops::Range<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i32> as
                        crate::altrep_data::AltIntegerData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <std::ops::Range<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i32> as
                        crate::altrep_data::AltIntegerData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::ops::Range<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        match <std::ops::Range<i32> as
                    crate::altrep_data::AltIntegerData>::sum(data, narm) {
            ::core::option::Option::Some(s) => {
                if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
                    crate::SEXP::scalar_integer(s as i32)
                } else { crate::SEXP::scalar_real(s as f64) }
            }
            ::core::option::Option::None => crate::SEXP::null(),
        }
    }
    const HAS_MIN: bool = true;
    fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::ops::Range<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i32> as
                        crate::altrep_data::AltIntegerData>::min(data,
                    narm).map(|m|
                    crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MAX: bool = true;
    fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::ops::Range<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i32> as
                        crate::altrep_data::AltIntegerData>::max(data,
                    narm).map(|m|
                    crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
    }
}
impl crate::altrep_data::InferBase for std::ops::Range<i32> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Int;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altinteger_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Int)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<std::ops::Range<i32>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<std::ops::Range<i32>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_int::<std::ops::Range<i32>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Range_i32() {
    <std::ops::Range<i32> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Range_i32:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Range_i32 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Range_i32,
            symbol: "__mx_altrep_reg_builtin_Range_i32",
        }
    };impl_builtin_altrep_family!(
415    std::ops::Range<i32>,
416    integer,
417    materializing,
418    __mx_altrep_reg_builtin_Range_i32,
419    __MX_ALTREP_REG_ENTRY_builtin_Range_i32
420);
421impl crate::altrep_traits::Altrep for std::ops::Range<i64> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::ops::Range<i64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i64> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::ops::Range<i64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i64> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <std::ops::Range<i64> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<std::ops::Range<i64>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_data::AltrepDataptr<i32> for std::ops::Range<i64> where  {
    fn dataptr(&mut self, _writable: bool)
        -> ::core::option::Option<*mut i32> {
        ::core::option::Option::None
    }
}
impl crate::altrep_traits::AltVec for std::ops::Range<i64> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <std::ops::Range<i64> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::ops::Range<i64> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <std::ops::Range<i64> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <std::ops::Range<i64> as
                                crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <std::ops::Range<i64> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::ops::Range<i64> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <std::ops::Range<i64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i64> as
                        crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltInteger for std::ops::Range<i64> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <i32 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <std::ops::Range<i64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i64> as
                crate::altrep_data::AltIntegerData>::elt(data,
            i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<i32>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::ops::Range<i64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <std::ops::Range<i64> as
                    crate::altrep_data::AltIntegerData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <std::ops::Range<i64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i64> as
                        crate::altrep_data::AltIntegerData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <std::ops::Range<i64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i64> as
                        crate::altrep_data::AltIntegerData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::ops::Range<i64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        match <std::ops::Range<i64> as
                    crate::altrep_data::AltIntegerData>::sum(data, narm) {
            ::core::option::Option::Some(s) => {
                if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
                    crate::SEXP::scalar_integer(s as i32)
                } else { crate::SEXP::scalar_real(s as f64) }
            }
            ::core::option::Option::None => crate::SEXP::null(),
        }
    }
    const HAS_MIN: bool = true;
    fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::ops::Range<i64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i64> as
                        crate::altrep_data::AltIntegerData>::min(data,
                    narm).map(|m|
                    crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MAX: bool = true;
    fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::ops::Range<i64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<i64> as
                        crate::altrep_data::AltIntegerData>::max(data,
                    narm).map(|m|
                    crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
    }
}
impl crate::altrep_data::InferBase for std::ops::Range<i64> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Int;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altinteger_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Int)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<std::ops::Range<i64>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<std::ops::Range<i64>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_int::<std::ops::Range<i64>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Range_i64() {
    <std::ops::Range<i64> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Range_i64:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Range_i64 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Range_i64,
            symbol: "__mx_altrep_reg_builtin_Range_i64",
        }
    };impl_builtin_altrep_family!(
422    std::ops::Range<i64>,
423    integer,
424    materializing,
425    __mx_altrep_reg_builtin_Range_i64,
426    __MX_ALTREP_REG_ENTRY_builtin_Range_i64
427);
428impl crate::altrep_traits::Altrep for std::ops::Range<f64> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::ops::Range<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<f64> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::ops::Range<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<f64> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <std::ops::Range<f64> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<std::ops::Range<f64>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_data::AltrepDataptr<f64> for std::ops::Range<f64> where  {
    fn dataptr(&mut self, _writable: bool)
        -> ::core::option::Option<*mut f64> {
        ::core::option::Option::None
    }
}
impl crate::altrep_traits::AltVec for std::ops::Range<f64> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <std::ops::Range<f64> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::ops::Range<f64> as
                            crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <std::ops::Range<f64> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <std::ops::Range<f64> as
                                crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <std::ops::Range<f64> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::ops::Range<f64> as
                            crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<f64>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <std::ops::Range<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<f64> as
                        crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltReal for std::ops::Range<f64> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> f64 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <f64 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <std::ops::Range<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<f64> as
                crate::altrep_data::AltRealData>::elt(data, i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [f64]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<f64>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::ops::Range<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <std::ops::Range<f64> as
                    crate::altrep_data::AltRealData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <std::ops::Range<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<f64> as
                        crate::altrep_data::AltRealData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <std::ops::Range<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<f64> as
                        crate::altrep_data::AltRealData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::ops::Range<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<f64> as
                        crate::altrep_data::AltRealData>::sum(data,
                    narm).map(|s|
                    crate::SEXP::scalar_real(s)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MIN: bool = true;
    fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::ops::Range<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<f64> as
                        crate::altrep_data::AltRealData>::min(data,
                    narm).map(|m|
                    crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MAX: bool = true;
    fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::ops::Range<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::ops::Range<f64> as
                        crate::altrep_data::AltRealData>::max(data,
                    narm).map(|m|
                    crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
    }
}
impl crate::altrep_data::InferBase for std::ops::Range<f64> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Real;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altreal_class(class_name, pkg_name,
                    dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Real)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<std::ops::Range<f64>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<std::ops::Range<f64>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_real::<std::ops::Range<f64>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Range_f64() {
    <std::ops::Range<f64> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Range_f64:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Range_f64 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Range_f64,
            symbol: "__mx_altrep_reg_builtin_Range_f64",
        }
    };impl_builtin_altrep_family!(
429    std::ops::Range<f64>,
430    real,
431    materializing,
432    __mx_altrep_reg_builtin_Range_f64,
433    __MX_ALTREP_REG_ENTRY_builtin_Range_f64
434);
435// endregion
436
437// region: Box<[T]> implementations
438// Box<[T]> is a fat pointer (Sized) that wraps a DST slice.
439// Unlike Vec<T>, it has no capacity field - just ptr + len (2 words).
440// Useful for fixed-size heap allocations.
441// bool uses `materializing` (same reason as Vec<bool>).
442
443impl crate::altrep_traits::Altrep for Box<[i32]> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[i32]> as crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[i32]> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Box<[i32]> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Box<[i32]>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Box<[i32]> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <Box<[i32]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Box<[i32]> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <Box<[i32]> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <Box<[i32]> as
                                crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <Box<[i32]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Box<[i32]> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <Box<[i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[i32]> as
                        crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltInteger for Box<[i32]> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <i32 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <Box<[i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[i32]> as
                crate::altrep_data::AltIntegerData>::elt(data,
            i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<i32>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <Box<[i32]> as
                    crate::altrep_data::AltIntegerData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Box<[i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[i32]> as
                        crate::altrep_data::AltIntegerData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Box<[i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[i32]> as
                        crate::altrep_data::AltIntegerData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        match <Box<[i32]> as
                    crate::altrep_data::AltIntegerData>::sum(data, narm) {
            ::core::option::Option::Some(s) => {
                if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
                    crate::SEXP::scalar_integer(s as i32)
                } else { crate::SEXP::scalar_real(s as f64) }
            }
            ::core::option::Option::None => crate::SEXP::null(),
        }
    }
    const HAS_MIN: bool = true;
    fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[i32]> as
                        crate::altrep_data::AltIntegerData>::min(data,
                    narm).map(|m|
                    crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MAX: bool = true;
    fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[i32]> as
                        crate::altrep_data::AltIntegerData>::max(data,
                    narm).map(|m|
                    crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
    }
}
impl crate::altrep_data::InferBase for Box<[i32]> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Int;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altinteger_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Int)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe { crate::altrep_bridge::install_base::<Box<[i32]>>(cls) };
        unsafe { crate::altrep_bridge::install_vec::<Box<[i32]>>(cls) };
        unsafe { crate::altrep_bridge::install_int::<Box<[i32]>>(cls) };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_i32() {
    <Box<[i32]> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_i32:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Box_i32 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Box_i32,
            symbol: "__mx_altrep_reg_builtin_Box_i32",
        }
    };impl_builtin_altrep_family!(
444    Box<[i32]>,
445    integer,
446    dataptr,
447    __mx_altrep_reg_builtin_Box_i32,
448    __MX_ALTREP_REG_ENTRY_builtin_Box_i32
449);
450impl crate::altrep_traits::Altrep for Box<[f64]> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[f64]> as crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[f64]> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Box<[f64]> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Box<[f64]>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Box<[f64]> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <Box<[f64]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Box<[f64]> as
                            crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <Box<[f64]> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <Box<[f64]> as
                                crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <Box<[f64]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Box<[f64]> as
                            crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<f64>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <Box<[f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[f64]> as
                        crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltReal for Box<[f64]> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> f64 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <f64 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <Box<[f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[f64]> as
                crate::altrep_data::AltRealData>::elt(data, i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [f64]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<f64>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <Box<[f64]> as
                    crate::altrep_data::AltRealData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Box<[f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[f64]> as
                        crate::altrep_data::AltRealData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Box<[f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[f64]> as
                        crate::altrep_data::AltRealData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[f64]> as
                        crate::altrep_data::AltRealData>::sum(data,
                    narm).map(|s|
                    crate::SEXP::scalar_real(s)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MIN: bool = true;
    fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[f64]> as
                        crate::altrep_data::AltRealData>::min(data,
                    narm).map(|m|
                    crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MAX: bool = true;
    fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[f64]> as
                        crate::altrep_data::AltRealData>::max(data,
                    narm).map(|m|
                    crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
    }
}
impl crate::altrep_data::InferBase for Box<[f64]> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Real;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altreal_class(class_name, pkg_name,
                    dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Real)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe { crate::altrep_bridge::install_base::<Box<[f64]>>(cls) };
        unsafe { crate::altrep_bridge::install_vec::<Box<[f64]>>(cls) };
        unsafe { crate::altrep_bridge::install_real::<Box<[f64]>>(cls) };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_f64() {
    <Box<[f64]> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_f64:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Box_f64 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Box_f64,
            symbol: "__mx_altrep_reg_builtin_Box_f64",
        }
    };impl_builtin_altrep_family!(
451    Box<[f64]>,
452    real,
453    dataptr,
454    __mx_altrep_reg_builtin_Box_f64,
455    __MX_ALTREP_REG_ENTRY_builtin_Box_f64
456);
457impl crate::altrep_traits::Altrep for Box<[crate::RLogical]> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[crate::RLogical]> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[crate::RLogical]> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Box<[crate::RLogical]> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Box<[crate::RLogical]>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Box<[crate::RLogical]> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <Box<[crate::RLogical]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Box<[crate::RLogical]> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <Box<[crate::RLogical]> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <Box<[crate::RLogical]> as
                                crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <Box<[crate::RLogical]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Box<[crate::RLogical]> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <Box<[crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[crate::RLogical]> as
                        crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltLogical for Box<[crate::RLogical]> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <crate::RLogical as
                            crate::RNativeType>::elt(data2, i.max(0)).to_i32();
        }
        let data =
            unsafe {
                <Box<[crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let i = i.max(0) as usize;
        if let ::core::option::Option::Some(values) =
                <Box<[crate::RLogical]> as
                        crate::altrep_data::AltLogicalData>::as_r_slice(data) {
            return values[i];
        }
        <Box<[crate::RLogical]> as
                    crate::altrep_data::AltLogicalData>::elt(data, i).to_r_int()
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<i32>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <Box<[crate::RLogical]> as
                    crate::altrep_data::AltLogicalData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Box<[crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[crate::RLogical]> as
                        crate::altrep_data::AltLogicalData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Box<[crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[crate::RLogical]> as
                        crate::altrep_data::AltLogicalData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        match <Box<[crate::RLogical]> as
                    crate::altrep_data::AltLogicalData>::sum(data, narm) {
            ::core::option::Option::Some(s) => {
                if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
                    crate::SEXP::scalar_integer(s as i32)
                } else { crate::SEXP::scalar_real(s as f64) }
            }
            ::core::option::Option::None => crate::SEXP::null(),
        }
    }
}
impl crate::altrep_data::InferBase for Box<[crate::RLogical]> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Logical;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altlogical_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Logical)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<Box<[crate::RLogical]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<Box<[crate::RLogical]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_lgl::<Box<[crate::RLogical]>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_RLogical() {
    <Box<[crate::RLogical]> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_RLogical:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Box_RLogical };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Box_RLogical,
            symbol: "__mx_altrep_reg_builtin_Box_RLogical",
        }
    };impl_builtin_altrep_family!(
458    Box<[crate::RLogical]>,
459    logical,
460    dataptr,
461    __mx_altrep_reg_builtin_Box_RLogical,
462    __MX_ALTREP_REG_ENTRY_builtin_Box_RLogical
463);
464impl crate::altrep_traits::Altrep for Box<[bool]> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[bool]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[bool]> as crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[bool]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[bool]> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Box<[bool]> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Box<[bool]>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_data::AltrepDataptr<crate::RLogical> for Box<[bool]> where
    {
    fn dataptr(&mut self, _writable: bool)
        -> ::core::option::Option<*mut crate::RLogical> {
        ::core::option::Option::None
    }
}
impl crate::altrep_traits::AltVec for Box<[bool]> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <Box<[bool]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Box<[bool]> as
                            crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <Box<[bool]> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <Box<[bool]> as
                                crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <Box<[bool]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Box<[bool]> as
                            crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe {
            crate::altrep_data::materialize_altrep_data2::<crate::RLogical>(x)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <Box<[bool]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[bool]> as
                        crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltLogical for Box<[bool]> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <crate::RLogical as
                            crate::RNativeType>::elt(data2, i.max(0)).to_i32();
        }
        let data =
            unsafe {
                <Box<[bool]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let i = i.max(0) as usize;
        if let ::core::option::Option::Some(values) =
                <Box<[bool]> as
                        crate::altrep_data::AltLogicalData>::as_r_slice(data) {
            return values[i];
        }
        <Box<[bool]> as
                    crate::altrep_data::AltLogicalData>::elt(data, i).to_r_int()
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<i32>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[bool]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <Box<[bool]> as
                    crate::altrep_data::AltLogicalData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Box<[bool]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[bool]> as
                        crate::altrep_data::AltLogicalData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Box<[bool]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[bool]> as
                        crate::altrep_data::AltLogicalData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[bool]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        match <Box<[bool]> as
                    crate::altrep_data::AltLogicalData>::sum(data, narm) {
            ::core::option::Option::Some(s) => {
                if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
                    crate::SEXP::scalar_integer(s as i32)
                } else { crate::SEXP::scalar_real(s as f64) }
            }
            ::core::option::Option::None => crate::SEXP::null(),
        }
    }
}
impl crate::altrep_data::InferBase for Box<[bool]> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Logical;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altlogical_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Logical)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe { crate::altrep_bridge::install_base::<Box<[bool]>>(cls) };
        unsafe { crate::altrep_bridge::install_vec::<Box<[bool]>>(cls) };
        unsafe { crate::altrep_bridge::install_lgl::<Box<[bool]>>(cls) };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_bool() {
    <Box<[bool]> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_bool:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Box_bool };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Box_bool,
            symbol: "__mx_altrep_reg_builtin_Box_bool",
        }
    };impl_builtin_altrep_family!(
465    Box<[bool]>,
466    logical,
467    materializing,
468    __mx_altrep_reg_builtin_Box_bool,
469    __MX_ALTREP_REG_ENTRY_builtin_Box_bool
470);
471impl crate::altrep_traits::Altrep for Box<[u8]> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[u8]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[u8]> as crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[u8]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[u8]> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Box<[u8]> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Box<[u8]>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Box<[u8]> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <Box<[u8]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Box<[u8]> as
                            crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <Box<[u8]> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <Box<[u8]> as
                                crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <Box<[u8]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Box<[u8]> as
                            crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<u8>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <Box<[u8]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[u8]> as
                        crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltRaw for Box<[u8]> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> u8 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <u8 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <Box<[u8]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[u8]> as
                crate::altrep_data::AltRawData>::elt(data, i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [u8]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<u8>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[u8]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <Box<[u8]> as
                    crate::altrep_data::AltRawData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
}
impl crate::altrep_data::InferBase for Box<[u8]> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Raw;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altraw_class(class_name, pkg_name,
                    dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Raw)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe { crate::altrep_bridge::install_base::<Box<[u8]>>(cls) };
        unsafe { crate::altrep_bridge::install_vec::<Box<[u8]>>(cls) };
        unsafe { crate::altrep_bridge::install_raw::<Box<[u8]>>(cls) };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_u8() {
    <Box<[u8]> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_u8:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Box_u8 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Box_u8,
            symbol: "__mx_altrep_reg_builtin_Box_u8",
        }
    };impl_builtin_altrep_family!(
472    Box<[u8]>,
473    raw,
474    dataptr,
475    __mx_altrep_reg_builtin_Box_u8,
476    __MX_ALTREP_REG_ENTRY_builtin_Box_u8
477);
478impl crate::altrep_traits::Altrep for Box<[String]> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[String]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[String]> as crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[String]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[String]> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Box<[String]> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Box<[String]>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Box<[String]> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            crate::altrep_impl::altstring_dataptr::<Box<[String]>>(x,
                writable)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        let _ = x;
        ::core::ptr::null()
    }
}
impl crate::altrep_traits::AltString for Box<[String]> where  {
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
        unsafe { crate::altrep_impl::altstring_elt::<Box<[String]>>(x, i) }
    }
    const HAS_SET_ELT: bool = true;
    fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
        unsafe {
            crate::altrep_impl::altstring_set_elt::<Box<[String]>>(x, i, v)
        }
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Box<[String]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[String]> as
                        crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Box<[String]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[String]> as
                        crate::altrep_data::AltStringData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
}
impl crate::altrep_data::InferBase for Box<[String]> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altstring_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::String)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe { crate::altrep_bridge::install_base::<Box<[String]>>(cls) };
        unsafe { crate::altrep_bridge::install_vec::<Box<[String]>>(cls) };
        unsafe { crate::altrep_bridge::install_str::<Box<[String]>>(cls) };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_String() {
    <Box<[String]> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_String:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Box_String };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Box_String,
            symbol: "__mx_altrep_reg_builtin_Box_String",
        }
    };impl_builtin_altrep_family!(
479    Box<[String]>,
480    string,
481    dataptr,
482    __mx_altrep_reg_builtin_Box_String,
483    __MX_ALTREP_REG_ENTRY_builtin_Box_String
484);
485impl crate::altrep_traits::Altrep for Box<[crate::Rcomplex]> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[crate::Rcomplex]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[crate::Rcomplex]> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Box<[crate::Rcomplex]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[crate::Rcomplex]> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Box<[crate::Rcomplex]> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Box<[crate::Rcomplex]>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Box<[crate::Rcomplex]> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <Box<[crate::Rcomplex]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Box<[crate::Rcomplex]> as
                            crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <Box<[crate::Rcomplex]> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <Box<[crate::Rcomplex]> as
                                crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <Box<[crate::Rcomplex]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <Box<[crate::Rcomplex]> as
                            crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe {
            crate::altrep_data::materialize_altrep_data2::<crate::Rcomplex>(x)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <Box<[crate::Rcomplex]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[crate::Rcomplex]> as
                        crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltComplex for Box<[crate::Rcomplex]> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::Rcomplex {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <crate::Rcomplex as
                        crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <Box<[crate::Rcomplex]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Box<[crate::Rcomplex]> as
                crate::altrep_data::AltComplexData>::elt(data,
            i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [crate::Rcomplex])
        -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<crate::Rcomplex>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Box<[crate::Rcomplex]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <Box<[crate::Rcomplex]> as
                    crate::altrep_data::AltComplexData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
}
impl crate::altrep_data::InferBase for Box<[crate::Rcomplex]> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Complex;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altcomplex_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Complex)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<Box<[crate::Rcomplex]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<Box<[crate::Rcomplex]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_cplx::<Box<[crate::Rcomplex]>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_Rcomplex() {
    <Box<[crate::Rcomplex]> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_Rcomplex:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Box_Rcomplex };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Box_Rcomplex,
            symbol: "__mx_altrep_reg_builtin_Box_Rcomplex",
        }
    };impl_builtin_altrep_family!(
486    Box<[crate::Rcomplex]>,
487    complex,
488    dataptr,
489    __mx_altrep_reg_builtin_Box_Rcomplex,
490    __MX_ALTREP_REG_ENTRY_builtin_Box_Rcomplex
491);
492
493// Cow<'static, [T]> — static Rust borrows or owned data, with copy-on-write dataptr.
494// Borrowed variants expose R's data directly; Owned behaves like Vec.
495impl crate::altrep_traits::Altrep for
    std::borrow::Cow<'static, [crate::RLogical]> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [crate::RLogical]> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [crate::RLogical]> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <std::borrow::Cow<'static, [crate::RLogical]> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<std::borrow::Cow<'static,
                                    [crate::RLogical]>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for
    std::borrow::Cow<'static, [crate::RLogical]> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <std::borrow::Cow<'static, [crate::RLogical]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::borrow::Cow<'static, [crate::RLogical]> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <std::borrow::Cow<'static, [crate::RLogical]> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <std::borrow::Cow<'static, [crate::RLogical]> as
                                crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <std::borrow::Cow<'static, [crate::RLogical]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::borrow::Cow<'static, [crate::RLogical]> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <std::borrow::Cow<'static, [crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [crate::RLogical]> as
                        crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltLogical for
    std::borrow::Cow<'static, [crate::RLogical]> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <crate::RLogical as
                            crate::RNativeType>::elt(data2, i.max(0)).to_i32();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let i = i.max(0) as usize;
        if let ::core::option::Option::Some(values) =
                <std::borrow::Cow<'static, [crate::RLogical]> as
                        crate::altrep_data::AltLogicalData>::as_r_slice(data) {
            return values[i];
        }
        <std::borrow::Cow<'static, [crate::RLogical]> as
                    crate::altrep_data::AltLogicalData>::elt(data, i).to_r_int()
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<i32>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <std::borrow::Cow<'static, [crate::RLogical]> as
                    crate::altrep_data::AltLogicalData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [crate::RLogical]> as
                        crate::altrep_data::AltLogicalData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [crate::RLogical]> as
                        crate::altrep_data::AltLogicalData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [crate::RLogical]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        match <std::borrow::Cow<'static, [crate::RLogical]> as
                    crate::altrep_data::AltLogicalData>::sum(data, narm) {
            ::core::option::Option::Some(s) => {
                if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
                    crate::SEXP::scalar_integer(s as i32)
                } else { crate::SEXP::scalar_real(s as f64) }
            }
            ::core::option::Option::None => crate::SEXP::null(),
        }
    }
}
impl crate::altrep_data::InferBase for
    std::borrow::Cow<'static, [crate::RLogical]> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Logical;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altlogical_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Logical)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<std::borrow::Cow<'static,
                    [crate::RLogical]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<std::borrow::Cow<'static,
                    [crate::RLogical]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_lgl::<std::borrow::Cow<'static,
                    [crate::RLogical]>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Cow_RLogical() {
    <std::borrow::Cow<'static, [crate::RLogical]> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Cow_RLogical:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Cow_RLogical };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Cow_RLogical,
            symbol: "__mx_altrep_reg_builtin_Cow_RLogical",
        }
    };impl_builtin_altrep_family!(
496    std::borrow::Cow<'static, [crate::RLogical]>,
497    logical,
498    dataptr,
499    __mx_altrep_reg_builtin_Cow_RLogical,
500    __MX_ALTREP_REG_ENTRY_builtin_Cow_RLogical
501);
502impl crate::altrep_traits::Altrep for std::borrow::Cow<'static, [i32]> where
    {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [i32]> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [i32]> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <std::borrow::Cow<'static, [i32]> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<std::borrow::Cow<'static,
                                    [i32]>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for std::borrow::Cow<'static, [i32]> where
    {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <std::borrow::Cow<'static, [i32]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::borrow::Cow<'static, [i32]> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <std::borrow::Cow<'static, [i32]> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <std::borrow::Cow<'static, [i32]> as
                                crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <std::borrow::Cow<'static, [i32]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::borrow::Cow<'static, [i32]> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltInteger for std::borrow::Cow<'static, [i32]>
    where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <i32 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [i32]> as
                crate::altrep_data::AltIntegerData>::elt(data,
            i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<i32>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <std::borrow::Cow<'static, [i32]> as
                    crate::altrep_data::AltIntegerData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltIntegerData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltIntegerData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        match <std::borrow::Cow<'static, [i32]> as
                    crate::altrep_data::AltIntegerData>::sum(data, narm) {
            ::core::option::Option::Some(s) => {
                if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
                    crate::SEXP::scalar_integer(s as i32)
                } else { crate::SEXP::scalar_real(s as f64) }
            }
            ::core::option::Option::None => crate::SEXP::null(),
        }
    }
    const HAS_MIN: bool = true;
    fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltIntegerData>::min(data,
                    narm).map(|m|
                    crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MAX: bool = true;
    fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [i32]> as
                        crate::altrep_data::AltIntegerData>::max(data,
                    narm).map(|m|
                    crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
    }
}
impl crate::altrep_data::InferBase for std::borrow::Cow<'static, [i32]> where
    {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Int;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altinteger_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Int)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<std::borrow::Cow<'static,
                    [i32]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<std::borrow::Cow<'static,
                    [i32]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_int::<std::borrow::Cow<'static,
                    [i32]>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Cow_i32() {
    <std::borrow::Cow<'static, [i32]> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Cow_i32:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Cow_i32 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Cow_i32,
            symbol: "__mx_altrep_reg_builtin_Cow_i32",
        }
    };impl_builtin_altrep_family!(
503    std::borrow::Cow<'static, [i32]>,
504    integer,
505    dataptr,
506    __mx_altrep_reg_builtin_Cow_i32,
507    __MX_ALTREP_REG_ENTRY_builtin_Cow_i32
508);
509impl crate::altrep_traits::Altrep for std::borrow::Cow<'static, [f64]> where
    {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [f64]> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [f64]> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <std::borrow::Cow<'static, [f64]> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<std::borrow::Cow<'static,
                                    [f64]>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for std::borrow::Cow<'static, [f64]> where
    {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <std::borrow::Cow<'static, [f64]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::borrow::Cow<'static, [f64]> as
                            crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <std::borrow::Cow<'static, [f64]> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <std::borrow::Cow<'static, [f64]> as
                                crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <std::borrow::Cow<'static, [f64]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::borrow::Cow<'static, [f64]> as
                            crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<f64>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltReal for std::borrow::Cow<'static, [f64]> where
    {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> f64 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <f64 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [f64]> as
                crate::altrep_data::AltRealData>::elt(data, i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [f64]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<f64>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <std::borrow::Cow<'static, [f64]> as
                    crate::altrep_data::AltRealData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltRealData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltRealData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltRealData>::sum(data,
                    narm).map(|s|
                    crate::SEXP::scalar_real(s)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MIN: bool = true;
    fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltRealData>::min(data,
                    narm).map(|m|
                    crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MAX: bool = true;
    fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [f64]> as
                        crate::altrep_data::AltRealData>::max(data,
                    narm).map(|m|
                    crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
    }
}
impl crate::altrep_data::InferBase for std::borrow::Cow<'static, [f64]> where
    {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Real;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altreal_class(class_name, pkg_name,
                    dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Real)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<std::borrow::Cow<'static,
                    [f64]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<std::borrow::Cow<'static,
                    [f64]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_real::<std::borrow::Cow<'static,
                    [f64]>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Cow_f64() {
    <std::borrow::Cow<'static, [f64]> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Cow_f64:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Cow_f64 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Cow_f64,
            symbol: "__mx_altrep_reg_builtin_Cow_f64",
        }
    };impl_builtin_altrep_family!(
510    std::borrow::Cow<'static, [f64]>,
511    real,
512    dataptr,
513    __mx_altrep_reg_builtin_Cow_f64,
514    __MX_ALTREP_REG_ENTRY_builtin_Cow_f64
515);
516impl crate::altrep_traits::Altrep for std::borrow::Cow<'static, [u8]> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [u8]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [u8]> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [u8]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [u8]> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <std::borrow::Cow<'static, [u8]> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<std::borrow::Cow<'static,
                                    [u8]>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for std::borrow::Cow<'static, [u8]> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <std::borrow::Cow<'static, [u8]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::borrow::Cow<'static, [u8]> as
                            crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <std::borrow::Cow<'static, [u8]> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <std::borrow::Cow<'static, [u8]> as
                                crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <std::borrow::Cow<'static, [u8]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::borrow::Cow<'static, [u8]> as
                            crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<u8>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <std::borrow::Cow<'static, [u8]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [u8]> as
                        crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltRaw for std::borrow::Cow<'static, [u8]> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> u8 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <u8 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [u8]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [u8]> as
                crate::altrep_data::AltRawData>::elt(data, i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [u8]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<u8>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [u8]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <std::borrow::Cow<'static, [u8]> as
                    crate::altrep_data::AltRawData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
}
impl crate::altrep_data::InferBase for std::borrow::Cow<'static, [u8]> where
    {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Raw;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altraw_class(class_name, pkg_name,
                    dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Raw)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<std::borrow::Cow<'static,
                    [u8]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<std::borrow::Cow<'static,
                    [u8]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_raw::<std::borrow::Cow<'static,
                    [u8]>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Cow_u8() {
    <std::borrow::Cow<'static, [u8]> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Cow_u8:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Cow_u8 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Cow_u8,
            symbol: "__mx_altrep_reg_builtin_Cow_u8",
        }
    };impl_builtin_altrep_family!(
517    std::borrow::Cow<'static, [u8]>,
518    raw,
519    dataptr,
520    __mx_altrep_reg_builtin_Cow_u8,
521    __MX_ALTREP_REG_ENTRY_builtin_Cow_u8
522);
523impl crate::altrep_traits::Altrep for
    std::borrow::Cow<'static, [crate::Rcomplex]> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [crate::Rcomplex]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [crate::Rcomplex]> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [crate::Rcomplex]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [crate::Rcomplex]> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <std::borrow::Cow<'static, [crate::Rcomplex]> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<std::borrow::Cow<'static,
                                    [crate::Rcomplex]>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for
    std::borrow::Cow<'static, [crate::Rcomplex]> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <std::borrow::Cow<'static, [crate::Rcomplex]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::borrow::Cow<'static, [crate::Rcomplex]> as
                            crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <std::borrow::Cow<'static, [crate::Rcomplex]> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <std::borrow::Cow<'static, [crate::Rcomplex]> as
                                crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <std::borrow::Cow<'static, [crate::Rcomplex]> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::borrow::Cow<'static, [crate::Rcomplex]> as
                            crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe {
            crate::altrep_data::materialize_altrep_data2::<crate::Rcomplex>(x)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <std::borrow::Cow<'static, [crate::Rcomplex]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [crate::Rcomplex]> as
                        crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltComplex for
    std::borrow::Cow<'static, [crate::Rcomplex]> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::Rcomplex {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <crate::Rcomplex as
                        crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [crate::Rcomplex]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::borrow::Cow<'static, [crate::Rcomplex]> as
                crate::altrep_data::AltComplexData>::elt(data,
            i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [crate::Rcomplex])
        -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<crate::Rcomplex>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::borrow::Cow<'static, [crate::Rcomplex]> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <std::borrow::Cow<'static, [crate::Rcomplex]> as
                    crate::altrep_data::AltComplexData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
}
impl crate::altrep_data::InferBase for
    std::borrow::Cow<'static, [crate::Rcomplex]> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Complex;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altcomplex_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Complex)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<std::borrow::Cow<'static,
                    [crate::Rcomplex]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<std::borrow::Cow<'static,
                    [crate::Rcomplex]>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_cplx::<std::borrow::Cow<'static,
                    [crate::Rcomplex]>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Cow_Rcomplex() {
    <std::borrow::Cow<'static, [crate::Rcomplex]> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Cow_Rcomplex:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Cow_Rcomplex };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Cow_Rcomplex,
            symbol: "__mx_altrep_reg_builtin_Cow_Rcomplex",
        }
    };impl_builtin_altrep_family!(
524    std::borrow::Cow<'static, [crate::Rcomplex]>,
525    complex,
526    dataptr,
527    __mx_altrep_reg_builtin_Cow_Rcomplex,
528    __MX_ALTREP_REG_ENTRY_builtin_Cow_Rcomplex
529);
530
531// endregion
532// region: RegisterAltrep implementations for builtin types
533//
534// These implementations provide ALTREP class registration for Vec<T>, Box<[T]>,
535// and Range<T> types. They allow using these types with ALTREP via wrapper structs.
536//
537// Note: IntoR is NOT implemented here for Vec types because there are already
538// existing IntoR implementations that copy data to R eagerly. To get ALTREP
539// behavior, use wrapper structs:
540//   #[miniextendr(class = "MyVec")]
541//   pub struct MyVecClass(pub Vec<i32>);
542//
543// Each type uses a static OnceLock to cache the ALTREP class handle, which is
544// registered on first use with the current package's name (from ALTREP_PKG_NAME).
545
546use crate::altrep::RegisterAltrep;
547
548/// Helper macro to implement RegisterAltrep for a builtin type.
549macro_rules! impl_register_altrep_builtin {
550    ($ty:ty, $class_name:expr) => {
551        impl RegisterAltrep for $ty {
552            fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
553                use std::sync::OnceLock;
554                static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> = OnceLock::new();
555                *CLASS.get_or_init(|| {
556                    // Class name as null-terminated C string
557                    const CLASS_NAME: &[u8] = concat!($class_name, "\0").as_bytes();
558                    let cls = unsafe {
559                        <$ty as crate::altrep_data::InferBase>::make_class(
560                            CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
561                            crate::AltrepPkgName::as_ptr(),
562                        )
563                    };
564                    unsafe {
565                        <$ty as crate::altrep_data::InferBase>::install_methods(cls);
566                    }
567                    cls
568                })
569            }
570        }
571    };
572}
573
574pub(super) use impl_register_altrep_builtin;
575
576// Vec types - RegisterAltrep only (IntoR exists elsewhere, copies data)
577impl RegisterAltrep for Vec<i32> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Vec_i32\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<i32> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<i32> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<i32>, "Vec_i32");
578impl RegisterAltrep for Vec<f64> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Vec_f64\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<f64> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<f64> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<f64>, "Vec_f64");
579impl RegisterAltrep for Vec<crate::RLogical> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Vec_RLogical\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<crate::RLogical> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<crate::RLogical> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<crate::RLogical>, "Vec_RLogical");
580impl RegisterAltrep for Vec<bool> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Vec_bool\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<bool> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<bool> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<bool>, "Vec_bool");
581impl RegisterAltrep for Vec<u8> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Vec_u8\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<u8> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<u8> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<u8>, "Vec_u8");
582impl RegisterAltrep for Vec<String> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Vec_String\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<String> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<String> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<String>, "Vec_String");
583impl RegisterAltrep for Vec<Option<String>> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] =
                            "Vec_Option_String\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<Option<String>> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<Option<String>> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<Option<String>>, "Vec_Option_String");
584impl RegisterAltrep for Vec<crate::Rcomplex> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Vec_Rcomplex\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<crate::Rcomplex> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<crate::Rcomplex> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<crate::Rcomplex>, "Vec_Rcomplex");
585
586// Range types - RegisterAltrep only
587impl RegisterAltrep for std::ops::Range<i32> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Range_i32\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <std::ops::Range<i32> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <std::ops::Range<i32> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(std::ops::Range<i32>, "Range_i32");
588impl RegisterAltrep for std::ops::Range<i64> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Range_i64\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <std::ops::Range<i64> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <std::ops::Range<i64> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(std::ops::Range<i64>, "Range_i64");
589impl RegisterAltrep for std::ops::Range<f64> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Range_f64\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <std::ops::Range<f64> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <std::ops::Range<f64> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(std::ops::Range<f64>, "Range_f64");
590
591// Box types - RegisterAltrep only
592impl RegisterAltrep for Box<[i32]> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Box_i32\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Box<[i32]> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Box<[i32]> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Box<[i32]>, "Box_i32");
593impl RegisterAltrep for Box<[f64]> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Box_f64\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Box<[f64]> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Box<[f64]> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Box<[f64]>, "Box_f64");
594impl RegisterAltrep for Box<[crate::RLogical]> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Box_RLogical\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Box<[crate::RLogical]> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Box<[crate::RLogical]> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Box<[crate::RLogical]>, "Box_RLogical");
595impl RegisterAltrep for Box<[bool]> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Box_bool\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Box<[bool]> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Box<[bool]> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Box<[bool]>, "Box_bool");
596impl RegisterAltrep for Box<[u8]> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Box_u8\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Box<[u8]> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Box<[u8]> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Box<[u8]>, "Box_u8");
597impl RegisterAltrep for Box<[String]> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Box_String\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Box<[String]> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Box<[String]> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Box<[String]>, "Box_String");
598impl RegisterAltrep for Box<[crate::Rcomplex]> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Box_Rcomplex\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Box<[crate::Rcomplex]> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Box<[crate::Rcomplex]> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Box<[crate::Rcomplex]>, "Box_Rcomplex");
599
600// Cow types - RegisterAltrep for zero-copy borrow from R
601impl RegisterAltrep for std::borrow::Cow<'static, [crate::RLogical]> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Cow_RLogical\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <std::borrow::Cow<'static, [crate::RLogical]> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <std::borrow::Cow<'static, [crate::RLogical]> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(std::borrow::Cow<'static, [crate::RLogical]>, "Cow_RLogical");
602impl RegisterAltrep for std::borrow::Cow<'static, [i32]> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Cow_i32\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <std::borrow::Cow<'static, [i32]> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <std::borrow::Cow<'static, [i32]> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(std::borrow::Cow<'static, [i32]>, "Cow_i32");
603impl RegisterAltrep for std::borrow::Cow<'static, [f64]> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Cow_f64\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <std::borrow::Cow<'static, [f64]> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <std::borrow::Cow<'static, [f64]> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(std::borrow::Cow<'static, [f64]>, "Cow_f64");
604impl RegisterAltrep for std::borrow::Cow<'static, [u8]> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Cow_u8\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <std::borrow::Cow<'static, [u8]> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <std::borrow::Cow<'static, [u8]> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(std::borrow::Cow<'static, [u8]>, "Cow_u8");
605impl RegisterAltrep for std::borrow::Cow<'static, [crate::Rcomplex]> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Cow_Rcomplex\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <std::borrow::Cow<'static, [crate::Rcomplex]> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <std::borrow::Cow<'static, [crate::Rcomplex]> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(std::borrow::Cow<'static, [crate::Rcomplex]>, "Cow_Rcomplex");
606
607// Cow string vector types
608impl RegisterAltrep for Vec<std::borrow::Cow<'static, str>> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Vec_Cow_str\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<std::borrow::Cow<'static, str>> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<std::borrow::Cow<'static, str>> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<std::borrow::Cow<'static, str>>, "Vec_Cow_str");
609impl RegisterAltrep for Vec<Option<std::borrow::Cow<'static, str>>> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] =
                            "Vec_Option_Cow_str\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<Option<std::borrow::Cow<'static, str>>> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<Option<std::borrow::Cow<'static, str>>> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(
610    Vec<Option<std::borrow::Cow<'static, str>>>,
611    "Vec_Option_Cow_str"
612);
613// endregion
614
615// region: Native VecDeque classes
616
617impl crate::altrep_traits::Altrep for std::collections::VecDeque<i32> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<i32> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<i32> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <std::collections::VecDeque<i32> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<std::collections::VecDeque<i32>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for std::collections::VecDeque<i32> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <std::collections::VecDeque<i32> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::collections::VecDeque<i32> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <std::collections::VecDeque<i32> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <std::collections::VecDeque<i32> as
                                crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <std::collections::VecDeque<i32> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::collections::VecDeque<i32> as
                            crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltInteger for std::collections::VecDeque<i32>
    where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <i32 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<i32> as
                crate::altrep_data::AltIntegerData>::elt(data,
            i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<i32>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <std::collections::VecDeque<i32> as
                    crate::altrep_data::AltIntegerData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltIntegerData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltIntegerData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        match <std::collections::VecDeque<i32> as
                    crate::altrep_data::AltIntegerData>::sum(data, narm) {
            ::core::option::Option::Some(s) => {
                if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
                    crate::SEXP::scalar_integer(s as i32)
                } else { crate::SEXP::scalar_real(s as f64) }
            }
            ::core::option::Option::None => crate::SEXP::null(),
        }
    }
    const HAS_MIN: bool = true;
    fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltIntegerData>::min(data,
                    narm).map(|m|
                    crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MAX: bool = true;
    fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<i32> as
                        crate::altrep_data::AltIntegerData>::max(data,
                    narm).map(|m|
                    crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
    }
}
impl crate::altrep_data::InferBase for std::collections::VecDeque<i32> where
    {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Int;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altinteger_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Int)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<std::collections::VecDeque<i32>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<std::collections::VecDeque<i32>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_int::<std::collections::VecDeque<i32>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_VecDeque_i32() {
    <std::collections::VecDeque<i32> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_VecDeque_i32:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_VecDeque_i32 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_VecDeque_i32,
            symbol: "__mx_altrep_reg_builtin_VecDeque_i32",
        }
    };impl_builtin_altrep_family!(
618    std::collections::VecDeque<i32>,
619    integer,
620    dataptr,
621    __mx_altrep_reg_builtin_VecDeque_i32,
622    __MX_ALTREP_REG_ENTRY_builtin_VecDeque_i32
623);
624impl RegisterAltrep for std::collections::VecDeque<i32> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "VecDeque_i32\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <std::collections::VecDeque<i32> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <std::collections::VecDeque<i32> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(std::collections::VecDeque<i32>, "VecDeque_i32");
625
626impl crate::altrep_traits::Altrep for std::collections::VecDeque<f64> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<f64> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<f64> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <std::collections::VecDeque<f64> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<std::collections::VecDeque<f64>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for std::collections::VecDeque<f64> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <std::collections::VecDeque<f64> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::collections::VecDeque<f64> as
                            crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <std::collections::VecDeque<f64> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <std::collections::VecDeque<f64> as
                                crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <std::collections::VecDeque<f64> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::collections::VecDeque<f64> as
                            crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<f64>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltReal for std::collections::VecDeque<f64> where
    {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> f64 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <f64 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<f64> as
                crate::altrep_data::AltRealData>::elt(data, i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [f64]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<f64>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <std::collections::VecDeque<f64> as
                    crate::altrep_data::AltRealData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltRealData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltRealData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
    const HAS_SUM: bool = true;
    fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltRealData>::sum(data,
                    narm).map(|s|
                    crate::SEXP::scalar_real(s)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MIN: bool = true;
    fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltRealData>::min(data,
                    narm).map(|m|
                    crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
    }
    const HAS_MAX: bool = true;
    fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<f64> as
                        crate::altrep_data::AltRealData>::max(data,
                    narm).map(|m|
                    crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
    }
}
impl crate::altrep_data::InferBase for std::collections::VecDeque<f64> where
    {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Real;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altreal_class(class_name, pkg_name,
                    dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Real)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<std::collections::VecDeque<f64>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<std::collections::VecDeque<f64>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_real::<std::collections::VecDeque<f64>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_VecDeque_f64() {
    <std::collections::VecDeque<f64> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_VecDeque_f64:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_VecDeque_f64 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_VecDeque_f64,
            symbol: "__mx_altrep_reg_builtin_VecDeque_f64",
        }
    };impl_builtin_altrep_family!(
627    std::collections::VecDeque<f64>,
628    real,
629    dataptr,
630    __mx_altrep_reg_builtin_VecDeque_f64,
631    __MX_ALTREP_REG_ENTRY_builtin_VecDeque_f64
632);
633impl RegisterAltrep for std::collections::VecDeque<f64> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "VecDeque_f64\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <std::collections::VecDeque<f64> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <std::collections::VecDeque<f64> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(std::collections::VecDeque<f64>, "VecDeque_f64");
634
635impl crate::altrep_traits::Altrep for std::collections::VecDeque<u8> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::collections::VecDeque<u8> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<u8> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::collections::VecDeque<u8> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<u8> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <std::collections::VecDeque<u8> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<std::collections::VecDeque<u8>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for std::collections::VecDeque<u8> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <std::collections::VecDeque<u8> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::collections::VecDeque<u8> as
                            crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <std::collections::VecDeque<u8> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <std::collections::VecDeque<u8> as
                                crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <std::collections::VecDeque<u8> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::collections::VecDeque<u8> as
                            crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe { crate::altrep_data::materialize_altrep_data2::<u8>(x) }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <std::collections::VecDeque<u8> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<u8> as
                        crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltRaw for std::collections::VecDeque<u8> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> u8 {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <u8 as crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <std::collections::VecDeque<u8> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<u8> as
                crate::altrep_data::AltRawData>::elt(data, i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [u8]) -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<u8>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::collections::VecDeque<u8> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <std::collections::VecDeque<u8> as
                    crate::altrep_data::AltRawData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
}
impl crate::altrep_data::InferBase for std::collections::VecDeque<u8> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Raw;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altraw_class(class_name, pkg_name,
                    dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Raw)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<std::collections::VecDeque<u8>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<std::collections::VecDeque<u8>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_raw::<std::collections::VecDeque<u8>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_VecDeque_u8() {
    <std::collections::VecDeque<u8> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_VecDeque_u8:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_VecDeque_u8 };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_VecDeque_u8,
            symbol: "__mx_altrep_reg_builtin_VecDeque_u8",
        }
    };impl_builtin_altrep_family!(
636    std::collections::VecDeque<u8>,
637    raw,
638    dataptr,
639    __mx_altrep_reg_builtin_VecDeque_u8,
640    __MX_ALTREP_REG_ENTRY_builtin_VecDeque_u8
641);
642impl RegisterAltrep for std::collections::VecDeque<u8> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "VecDeque_u8\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <std::collections::VecDeque<u8> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <std::collections::VecDeque<u8> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(std::collections::VecDeque<u8>, "VecDeque_u8");
643
644impl crate::altrep_traits::Altrep for
    std::collections::VecDeque<crate::Rcomplex> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::collections::VecDeque<crate::Rcomplex> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<crate::Rcomplex> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <std::collections::VecDeque<crate::Rcomplex> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<crate::Rcomplex> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <std::collections::VecDeque<crate::Rcomplex> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<std::collections::VecDeque<crate::Rcomplex>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for
    std::collections::VecDeque<crate::Rcomplex> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2).cast_mut();
            }
        }
        let direct =
            if writable {
                let d =
                    unsafe {
                        <std::collections::VecDeque<crate::Rcomplex> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::collections::VecDeque<crate::Rcomplex> as
                            crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
                        true).map(|p| p.cast::<::core::ffi::c_void>())
            } else {
                let ro =
                    {
                        let d =
                            unsafe {
                                <std::collections::VecDeque<crate::Rcomplex> as
                                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
                            };
                        <std::collections::VecDeque<crate::Rcomplex> as
                                crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d)
                    };
                if let ::core::option::Option::Some(p) = ro {
                    return p.cast_mut().cast::<::core::ffi::c_void>();
                }
                let d =
                    unsafe {
                        <std::collections::VecDeque<crate::Rcomplex> as
                                crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
                    };
                <std::collections::VecDeque<crate::Rcomplex> as
                            crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
                        false).map(|p| p.cast::<::core::ffi::c_void>())
            };
        if let ::core::option::Option::Some(p) = direct { return p; }
        unsafe {
            crate::altrep_data::materialize_altrep_data2::<crate::Rcomplex>(x)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        unsafe {
            if let ::core::option::Option::Some(data2) =
                    crate::altrep_data::materialized_altrep_data2(x) {
                return crate::sys::DATAPTR_RO(data2);
            }
        }
        let d =
            unsafe {
                <std::collections::VecDeque<crate::Rcomplex> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<crate::Rcomplex> as
                        crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d).map(|p|
                    p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
    }
}
impl crate::altrep_traits::AltComplex for
    std::collections::VecDeque<crate::Rcomplex> where  {
    const HAS_ELT: bool = true;
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::Rcomplex {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return <crate::Rcomplex as
                        crate::RNativeType>::elt(data2, i.max(0));
        }
        let data =
            unsafe {
                <std::collections::VecDeque<crate::Rcomplex> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <std::collections::VecDeque<crate::Rcomplex> as
                crate::altrep_data::AltComplexData>::elt(data,
            i.max(0) as usize)
    }
    const HAS_GET_REGION: bool = true;
    fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
        len: crate::R_xlen_t, buf: &mut [crate::Rcomplex])
        -> crate::R_xlen_t {
        if start < 0 || len <= 0 { return 0; }
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return unsafe {
                        crate::altrep_data::materialized_altrep_region::<crate::Rcomplex>(data2,
                            start as usize, len as usize, buf)
                    } as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <std::collections::VecDeque<crate::Rcomplex> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        let len = len as usize;
        <std::collections::VecDeque<crate::Rcomplex> as
                    crate::altrep_data::AltComplexData>::get_region(data,
                start as usize, len, buf) as crate::R_xlen_t
    }
}
impl crate::altrep_data::InferBase for
    std::collections::VecDeque<crate::Rcomplex> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::Complex;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altcomplex_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::Complex)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<std::collections::VecDeque<crate::Rcomplex>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<std::collections::VecDeque<crate::Rcomplex>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_cplx::<std::collections::VecDeque<crate::Rcomplex>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_VecDeque_Rcomplex() {
    <std::collections::VecDeque<crate::Rcomplex> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_VecDeque_Rcomplex:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_VecDeque_Rcomplex };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_VecDeque_Rcomplex,
            symbol: "__mx_altrep_reg_builtin_VecDeque_Rcomplex",
        }
    };impl_builtin_altrep_family!(
645    std::collections::VecDeque<crate::Rcomplex>,
646    complex,
647    dataptr,
648    __mx_altrep_reg_builtin_VecDeque_Rcomplex,
649    __MX_ALTREP_REG_ENTRY_builtin_VecDeque_Rcomplex
650);
651impl RegisterAltrep for std::collections::VecDeque<crate::Rcomplex> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] =
                            "VecDeque_Rcomplex\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <std::collections::VecDeque<crate::Rcomplex> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <std::collections::VecDeque<crate::Rcomplex> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(
652    std::collections::VecDeque<crate::Rcomplex>,
653    "VecDeque_Rcomplex"
654);
655
656// endregion
657
658// region: Vectors of owned unsized strings
659
660impl crate::altrep_traits::Altrep for Vec<Box<str>> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<Box<str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Box<str>> as crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<Box<str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Box<str>> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<Box<str>> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<Box<str>>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<Box<str>> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            crate::altrep_impl::altstring_dataptr::<Vec<Box<str>>>(x,
                writable)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        let _ = x;
        ::core::ptr::null()
    }
}
impl crate::altrep_traits::AltString for Vec<Box<str>> where  {
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
        unsafe { crate::altrep_impl::altstring_elt::<Vec<Box<str>>>(x, i) }
    }
    const HAS_SET_ELT: bool = true;
    fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
        unsafe {
            crate::altrep_impl::altstring_set_elt::<Vec<Box<str>>>(x, i, v)
        }
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<Box<str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Box<str>> as
                        crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<Box<str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Box<str>> as
                        crate::altrep_data::AltStringData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
}
impl crate::altrep_data::InferBase for Vec<Box<str>> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altstring_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::String)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe { crate::altrep_bridge::install_base::<Vec<Box<str>>>(cls) };
        unsafe { crate::altrep_bridge::install_vec::<Vec<Box<str>>>(cls) };
        unsafe { crate::altrep_bridge::install_str::<Vec<Box<str>>>(cls) };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Box_str() {
    <Vec<Box<str>> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Box_str:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Box_str };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_Box_str,
            symbol: "__mx_altrep_reg_builtin_Vec_Box_str",
        }
    };impl_builtin_altrep_family!(
661    Vec<Box<str>>,
662    string,
663    dataptr,
664    __mx_altrep_reg_builtin_Vec_Box_str,
665    __MX_ALTREP_REG_ENTRY_builtin_Vec_Box_str
666);
667impl RegisterAltrep for Vec<Box<str>> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Vec_Box_str\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<Box<str>> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<Box<str>> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<Box<str>>, "Vec_Box_str");
668
669impl crate::altrep_traits::Altrep for Vec<Option<Box<str>>> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<Option<Box<str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<Box<str>>> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<Option<Box<str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<Box<str>>> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<Option<Box<str>>> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<Option<Box<str>>>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<Option<Box<str>>> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            crate::altrep_impl::altstring_dataptr::<Vec<Option<Box<str>>>>(x,
                writable)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        let _ = x;
        ::core::ptr::null()
    }
}
impl crate::altrep_traits::AltString for Vec<Option<Box<str>>> where  {
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
        unsafe {
            crate::altrep_impl::altstring_elt::<Vec<Option<Box<str>>>>(x, i)
        }
    }
    const HAS_SET_ELT: bool = true;
    fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
        unsafe {
            crate::altrep_impl::altstring_set_elt::<Vec<Option<Box<str>>>>(x,
                i, v)
        }
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<Option<Box<str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<Box<str>>> as
                        crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<Option<Box<str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<Box<str>>> as
                        crate::altrep_data::AltStringData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
}
impl crate::altrep_data::InferBase for Vec<Option<Box<str>>> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altstring_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::String)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<Vec<Option<Box<str>>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<Vec<Option<Box<str>>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_str::<Vec<Option<Box<str>>>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Option_Box_str() {
    <Vec<Option<Box<str>>> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Box_str:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Box_str };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_Option_Box_str,
            symbol: "__mx_altrep_reg_builtin_Vec_Option_Box_str",
        }
    };impl_builtin_altrep_family!(
670    Vec<Option<Box<str>>>,
671    string,
672    dataptr,
673    __mx_altrep_reg_builtin_Vec_Option_Box_str,
674    __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Box_str
675);
676impl RegisterAltrep for Vec<Option<Box<str>>> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] =
                            "Vec_Option_Box_str\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<Option<Box<str>>> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<Option<Box<str>>> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<Option<Box<str>>>, "Vec_Option_Box_str");
677
678impl crate::altrep_traits::Altrep for Vec<std::rc::Rc<str>> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<std::rc::Rc<str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<std::rc::Rc<str>> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<std::rc::Rc<str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<std::rc::Rc<str>> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<std::rc::Rc<str>> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<std::rc::Rc<str>>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<std::rc::Rc<str>> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            crate::altrep_impl::altstring_dataptr::<Vec<std::rc::Rc<str>>>(x,
                writable)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        let _ = x;
        ::core::ptr::null()
    }
}
impl crate::altrep_traits::AltString for Vec<std::rc::Rc<str>> where  {
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
        unsafe {
            crate::altrep_impl::altstring_elt::<Vec<std::rc::Rc<str>>>(x, i)
        }
    }
    const HAS_SET_ELT: bool = true;
    fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
        unsafe {
            crate::altrep_impl::altstring_set_elt::<Vec<std::rc::Rc<str>>>(x,
                i, v)
        }
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<std::rc::Rc<str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<std::rc::Rc<str>> as
                        crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<std::rc::Rc<str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<std::rc::Rc<str>> as
                        crate::altrep_data::AltStringData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
}
impl crate::altrep_data::InferBase for Vec<std::rc::Rc<str>> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altstring_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::String)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<Vec<std::rc::Rc<str>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<Vec<std::rc::Rc<str>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_str::<Vec<std::rc::Rc<str>>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Rc_str() {
    <Vec<std::rc::Rc<str>> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Rc_str:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Rc_str };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_Rc_str,
            symbol: "__mx_altrep_reg_builtin_Vec_Rc_str",
        }
    };impl_builtin_altrep_family!(
679    Vec<std::rc::Rc<str>>,
680    string,
681    dataptr,
682    __mx_altrep_reg_builtin_Vec_Rc_str,
683    __MX_ALTREP_REG_ENTRY_builtin_Vec_Rc_str
684);
685impl RegisterAltrep for Vec<std::rc::Rc<str>> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Vec_Rc_str\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<std::rc::Rc<str>> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<std::rc::Rc<str>> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<std::rc::Rc<str>>, "Vec_Rc_str");
686
687impl crate::altrep_traits::Altrep for Vec<Option<std::rc::Rc<str>>> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<Option<std::rc::Rc<str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<std::rc::Rc<str>>> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<Option<std::rc::Rc<str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<std::rc::Rc<str>>> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<Option<std::rc::Rc<str>>> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<Option<std::rc::Rc<str>>>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<Option<std::rc::Rc<str>>> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            crate::altrep_impl::altstring_dataptr::<Vec<Option<std::rc::Rc<str>>>>(x,
                writable)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        let _ = x;
        ::core::ptr::null()
    }
}
impl crate::altrep_traits::AltString for Vec<Option<std::rc::Rc<str>>> where
    {
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
        unsafe {
            crate::altrep_impl::altstring_elt::<Vec<Option<std::rc::Rc<str>>>>(x,
                i)
        }
    }
    const HAS_SET_ELT: bool = true;
    fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
        unsafe {
            crate::altrep_impl::altstring_set_elt::<Vec<Option<std::rc::Rc<str>>>>(x,
                i, v)
        }
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<Option<std::rc::Rc<str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<std::rc::Rc<str>>> as
                        crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<Option<std::rc::Rc<str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<std::rc::Rc<str>>> as
                        crate::altrep_data::AltStringData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
}
impl crate::altrep_data::InferBase for Vec<Option<std::rc::Rc<str>>> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altstring_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::String)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<Vec<Option<std::rc::Rc<str>>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<Vec<Option<std::rc::Rc<str>>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_str::<Vec<Option<std::rc::Rc<str>>>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Option_Rc_str() {
    <Vec<Option<std::rc::Rc<str>>> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Rc_str:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Rc_str };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_Option_Rc_str,
            symbol: "__mx_altrep_reg_builtin_Vec_Option_Rc_str",
        }
    };impl_builtin_altrep_family!(
688    Vec<Option<std::rc::Rc<str>>>,
689    string,
690    dataptr,
691    __mx_altrep_reg_builtin_Vec_Option_Rc_str,
692    __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Rc_str
693);
694impl RegisterAltrep for Vec<Option<std::rc::Rc<str>>> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] =
                            "Vec_Option_Rc_str\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<Option<std::rc::Rc<str>>> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<Option<std::rc::Rc<str>>> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<Option<std::rc::Rc<str>>>, "Vec_Option_Rc_str");
695
696impl crate::altrep_traits::Altrep for Vec<std::sync::Arc<str>> where  {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<std::sync::Arc<str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<std::sync::Arc<str>> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<std::sync::Arc<str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<std::sync::Arc<str>> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<std::sync::Arc<str>> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<std::sync::Arc<str>>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<std::sync::Arc<str>> where  {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            crate::altrep_impl::altstring_dataptr::<Vec<std::sync::Arc<str>>>(x,
                writable)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        let _ = x;
        ::core::ptr::null()
    }
}
impl crate::altrep_traits::AltString for Vec<std::sync::Arc<str>> where  {
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
        unsafe {
            crate::altrep_impl::altstring_elt::<Vec<std::sync::Arc<str>>>(x,
                i)
        }
    }
    const HAS_SET_ELT: bool = true;
    fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
        unsafe {
            crate::altrep_impl::altstring_set_elt::<Vec<std::sync::Arc<str>>>(x,
                i, v)
        }
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<std::sync::Arc<str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<std::sync::Arc<str>> as
                        crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<std::sync::Arc<str>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<std::sync::Arc<str>> as
                        crate::altrep_data::AltStringData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
}
impl crate::altrep_data::InferBase for Vec<std::sync::Arc<str>> where  {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altstring_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::String)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<Vec<std::sync::Arc<str>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<Vec<std::sync::Arc<str>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_str::<Vec<std::sync::Arc<str>>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Arc_str() {
    <Vec<std::sync::Arc<str>> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Arc_str:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Arc_str };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_Arc_str,
            symbol: "__mx_altrep_reg_builtin_Vec_Arc_str",
        }
    };impl_builtin_altrep_family!(
697    Vec<std::sync::Arc<str>>,
698    string,
699    dataptr,
700    __mx_altrep_reg_builtin_Vec_Arc_str,
701    __MX_ALTREP_REG_ENTRY_builtin_Vec_Arc_str
702);
703impl RegisterAltrep for Vec<std::sync::Arc<str>> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] = "Vec_Arc_str\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<std::sync::Arc<str>> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<std::sync::Arc<str>> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<std::sync::Arc<str>>, "Vec_Arc_str");
704
705impl crate::altrep_traits::Altrep for Vec<Option<std::sync::Arc<str>>> where
    {
    const GUARD: crate::altrep_traits::AltrepGuard =
        crate::altrep_traits::AltrepGuard::RUnwind;
    fn length(x: crate::SEXP) -> crate::R_xlen_t {
        if let ::core::option::Option::Some(data2) =
                unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
            return crate::SexpExt::len(&data2) as crate::R_xlen_t;
        }
        let data =
            unsafe {
                <Vec<Option<std::sync::Arc<str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<std::sync::Arc<str>>> as
                    crate::altrep_data::AltrepLen>::altrep_len(data) as
            crate::R_xlen_t
    }
    const HAS_SERIALIZED_STATE: bool = true;
    fn serialized_state(x: crate::SEXP) -> crate::SEXP {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::SEXP::null();
        }
        let data =
            unsafe {
                <Vec<Option<std::sync::Arc<str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<std::sync::Arc<str>>> as
                crate::altrep_data::AltrepSerialize>::serialized_state(data)
    }
    const HAS_UNSERIALIZE: bool = true;
    fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
        let ::core::option::Option::Some(data) =
            <Vec<Option<std::sync::Arc<str>>> as
                    crate::altrep_data::AltrepSerialize>::unserialize(state) else {
                {
                    ::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
                            ::core::any::type_name::<Vec<Option<std::sync::Arc<str>>>>()));
                };
            };
        unsafe {
            use crate::SEXP;
            use crate::externalptr::ExternalPtr;
            use crate::sys::altrep::R_altrep_class_t;
            use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
            let ext_ptr = ExternalPtr::new_unchecked(data);
            let data1 = ext_ptr.as_sexp();
            Rf_protect_unchecked(data1);
            let cls = R_altrep_class_t::from_sexp(class);
            let out = cls.new_altrep_unchecked(data1, SEXP::nil());
            Rf_unprotect_unchecked(1);
            out
        }
    }
}
impl crate::altrep_traits::AltVec for Vec<Option<std::sync::Arc<str>>> where
    {
    const HAS_DATAPTR: bool = true;
    fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
        unsafe {
            crate::altrep_impl::altstring_dataptr::<Vec<Option<std::sync::Arc<str>>>>(x,
                writable)
        }
    }
    const HAS_DATAPTR_OR_NULL: bool = true;
    fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
        let _ = x;
        ::core::ptr::null()
    }
}
impl crate::altrep_traits::AltString for Vec<Option<std::sync::Arc<str>>>
    where  {
    fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
        unsafe {
            crate::altrep_impl::altstring_elt::<Vec<Option<std::sync::Arc<str>>>>(x,
                i)
        }
    }
    const HAS_SET_ELT: bool = true;
    fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
        unsafe {
            crate::altrep_impl::altstring_set_elt::<Vec<Option<std::sync::Arc<str>>>>(x,
                i, v)
        }
    }
    const HAS_IS_SORTED: bool = true;
    fn is_sorted(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return crate::altrep_traits::UNKNOWN_SORTEDNESS;
        }
        let data =
            unsafe {
                <Vec<Option<std::sync::Arc<str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<std::sync::Arc<str>>> as
                        crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
                    s.to_r_int()).unwrap_or(i32::MIN)
    }
    const HAS_NO_NA: bool = true;
    fn no_na(x: crate::SEXP) -> i32 {
        if unsafe { crate::altrep_data::altrep_values_written(x) } {
            return 0;
        }
        let data =
            unsafe {
                <Vec<Option<std::sync::Arc<str>>> as
                        crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
            };
        <Vec<Option<std::sync::Arc<str>>> as
                        crate::altrep_data::AltStringData>::no_na(data).map(|b|
                    if b { 1 } else { 0 }).unwrap_or(0)
    }
}
impl crate::altrep_data::InferBase for Vec<Option<std::sync::Arc<str>>> where
    {
    const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
    unsafe fn make_class(class_name: *const ::core::ffi::c_char,
        pkg_name: *const ::core::ffi::c_char)
        -> crate::sys::altrep::R_altrep_class_t {
        let dll = crate::altrep_dll_info();
        let cls =
            unsafe {
                crate::sys::altrep::R_make_altstring_class(class_name,
                    pkg_name, dll)
            };
        let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
        crate::altrep::validate_altrep_class(cls, name,
            crate::altrep::RBase::String)
    }
    unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
        unsafe {
            crate::altrep_bridge::install_base::<Vec<Option<std::sync::Arc<str>>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_vec::<Vec<Option<std::sync::Arc<str>>>>(cls)
        };
        unsafe {
            crate::altrep_bridge::install_str::<Vec<Option<std::sync::Arc<str>>>>(cls)
        };
    }
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Option_Arc_str() {
    <Vec<Option<std::sync::Arc<str>>> as
            crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Arc_str:
    crate::registry::AltrepRegistration =
    {
        #[allow(clippy :: no_effect_underscore_binding)]
        unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
            #[allow(clippy :: ref_option_ref)]
            let __new =
                || -> fn() -> &'static crate::registry::AltrepRegistration
                    { || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Arc_str };
            unsafe {
                crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
                    __new());
            }
        }
        crate::registry::AltrepRegistration {
            register: __mx_altrep_reg_builtin_Vec_Option_Arc_str,
            symbol: "__mx_altrep_reg_builtin_Vec_Option_Arc_str",
        }
    };impl_builtin_altrep_family!(
706    Vec<Option<std::sync::Arc<str>>>,
707    string,
708    dataptr,
709    __mx_altrep_reg_builtin_Vec_Option_Arc_str,
710    __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Arc_str
711);
712impl RegisterAltrep for Vec<Option<std::sync::Arc<str>>> {
    fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
        use std::sync::OnceLock;
        static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
            OnceLock::new();
        *CLASS.get_or_init(||
                    {
                        const CLASS_NAME: &[u8] =
                            "Vec_Option_Arc_str\u{0}".as_bytes();
                        let cls =
                            unsafe {
                                <Vec<Option<std::sync::Arc<str>>> as
                                        crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
                                    crate::AltrepPkgName::as_ptr())
                            };
                        unsafe {
                            <Vec<Option<std::sync::Arc<str>>> as
                                    crate::altrep_data::InferBase>::install_methods(cls);
                        }
                        cls
                    })
    }
}impl_register_altrep_builtin!(Vec<Option<std::sync::Arc<str>>>, "Vec_Option_Arc_str");
713// endregion