pub struct Pairlist { /* private fields */ }
Implementations
sourceimpl Pairlist
impl Pairlist
pub fn new() -> Self
sourcepub fn from_pairs<NV>(pairs: NV) -> Self where
NV: IntoIterator,
NV::IntoIter: DoubleEndedIterator,
NV::Item: SymPair,
pub fn from_pairs<NV>(pairs: NV) -> Self where
NV: IntoIterator,
NV::IntoIter: DoubleEndedIterator,
NV::Item: SymPair,
Convert an iterator of names and values to a pairlist object.
use extendr_api::prelude::*;
test! {
let pairs = (0..100).map(|i| (format!("n{}", i), i));
let pairlist = Pairlist::from_pairs(pairs);
assert_eq!(pairlist.len(), 100);
// Use "" to indicate the absense of the name
let unnamed_pairlist = Pairlist::from_pairs([("", "a"), ("", "b")]);
assert_eq!(call!("names", unnamed_pairlist)?, r!(NULL));
let unnamed_pairlist_r = R!(r#"pairlist("a", "b")"#)?.as_pairlist().unwrap();
assert_eq!(unnamed_pairlist_r.names().collect::<Vec<_>>(), vec!["", ""]);
}
sourcepub fn iter(&self) -> PairlistIterⓘNotable traits for PairlistIterimpl Iterator for PairlistIter type Item = (&'static str, Robj);
pub fn iter(&self) -> PairlistIterⓘNotable traits for PairlistIterimpl Iterator for PairlistIter type Item = (&'static str, Robj);
Generate paits of names and values.
use extendr_api::prelude::*;
test! {
let pairs = (0..100).map(|i| (format!("n{}", i), i));
let pairlist = Pairlist::from_pairs(pairs);
assert_eq!(pairlist.iter().count(), 100);
assert_eq!(pairlist.iter().nth(50), Some(("n50", r!(50))));
}
pub fn names(&self) -> impl Iterator<Item = &'static str>
pub fn values(&self) -> impl Iterator<Item = Robj>
Trait Implementations
sourceimpl Conversions for Pairlist
impl Conversions for Pairlist
as_*()
sourcefn as_language(&self) -> Option<Language>
fn as_language(&self) -> Option<Language>
Convert a language object to a Language wrapper. Read more
sourcefn as_pairlist(&self) -> Option<Pairlist>
fn as_pairlist(&self) -> Option<Pairlist>
Convert a pair list object (LISTSXP) to a Pairlist wrapper. Read more
sourcefn as_expressions(&self) -> Option<Expressions>
fn as_expressions(&self) -> Option<Expressions>
Convert an expression object (EXPRSXP) to a Expr wrapper. Read more
sourcefn as_environment(&self) -> Option<Environment>
fn as_environment(&self) -> Option<Environment>
Convert an environment object (ENVSXP) to a Env wrapper. Read more
sourcefn as_function(&self) -> Option<Function>
fn as_function(&self) -> Option<Function>
Convert a function object (CLOSXP) to a Function wrapper. Read more
sourcefn as_promise(&self) -> Option<Promise>
fn as_promise(&self) -> Option<Promise>
Get a wrapper for a promise.
sourceimpl IntoIterator for Pairlist
impl IntoIterator for Pairlist
sourcefn into_iter(self) -> Self::IntoIter
fn into_iter(self) -> Self::IntoIter
Convert a PairList into an interator, consuming the pairlist.
use extendr_api::prelude::*;
test! {
let pairlist = pairlist!(a=1, 2).as_pairlist().unwrap();
let vec : Vec<_> = pairlist.into_iter().collect();
assert_eq!(vec, vec![("a", r!(1)), ("", r!(2))]);
}
type IntoIter = PairlistIter
type IntoIter = PairlistIter
Which kind of iterator are we turning this into?
sourceimpl Operators for Pairlist
impl Operators for Pairlist
dollar() etc.
sourcefn dollar<T>(&self, symbol: T) -> Result<Robj> where
T: AsRef<str>,
fn dollar<T>(&self, symbol: T) -> Result<Robj> where
T: AsRef<str>,
Do the equivalent of x$y Read more
sourcefn slice<T>(&self, rhs: T) -> Result<Robj> where
T: Into<Robj>,
fn slice<T>(&self, rhs: T) -> Result<Robj> where
T: Into<Robj>,
Do the equivalent of x[y]
Read more
sourcefn index<T>(&self, rhs: T) -> Result<Robj> where
T: Into<Robj>,
fn index<T>(&self, rhs: T) -> Result<Robj> where
T: Into<Robj>,
Do the equivalent of x[[y]]
Read more
sourcefn tilde<T>(&self, rhs: T) -> Result<Robj> where
T: Into<Robj>,
fn tilde<T>(&self, rhs: T) -> Result<Robj> where
T: Into<Robj>,
Do the equivalent of x ~ y Read more
sourceimpl Rinternals for Pairlist
impl Rinternals for Pairlist
find_var() etc.
sourcefn is_logical(&self) -> bool
fn is_logical(&self) -> bool
Return true if this is a boolean (logical) vector
sourcefn is_complex(&self) -> bool
fn is_complex(&self) -> bool
Return true if this is a complex vector.
sourcefn is_expressions(&self) -> bool
fn is_expressions(&self) -> bool
Return true if this is an expression.
sourcefn is_environment(&self) -> bool
fn is_environment(&self) -> bool
Return true if this is an environment.
sourcefn is_promise(&self) -> bool
fn is_promise(&self) -> bool
Return true if this is an environment.
sourcefn is_external_pointer(&self) -> bool
fn is_external_pointer(&self) -> bool
Return true if this is an expression.
sourcefn get_current_srcref(val: i32) -> Robj
fn get_current_srcref(val: i32) -> Robj
Get the source ref.
sourcefn get_src_filename(&self) -> Robj
fn get_src_filename(&self) -> Robj
Get the source filename.
sourcefn as_character_vector(&self) -> Robj
fn as_character_vector(&self) -> Robj
Convert to a string vector.
sourcefn coerce_vector(&self, sexptype: u32) -> Robj
fn coerce_vector(&self, sexptype: u32) -> Robj
Convert to vectors of many kinds.
sourcefn pair_to_vector_list(&self) -> Robj
fn pair_to_vector_list(&self) -> Robj
Convert a pairlist (LISTSXP) to a vector list (VECSXP).
sourcefn vector_to_pair_list(&self) -> Robj
fn vector_to_pair_list(&self) -> Robj
Convert a vector list (VECSXP) to a pair list (LISTSXP)
sourcefn as_character_factor(&self) -> Robj
fn as_character_factor(&self) -> Robj
Convert a factor to a string vector.
sourcefn alloc_matrix(sexptype: SEXPTYPE, rows: i32, cols: i32) -> Robj
fn alloc_matrix(sexptype: SEXPTYPE, rows: i32, cols: i32) -> Robj
Allocate a matrix object.
sourcefn duplicate(&self) -> Robj
fn duplicate(&self) -> Robj
Do a deep copy of this object. Note that clone() only adds a reference. Read more
sourcefn find_function<K: TryInto<Symbol, Error = Error>>(
&self,
key: K
) -> Result<Robj>
fn find_function<K: TryInto<Symbol, Error = Error>>(
&self,
key: K
) -> Result<Robj>
Find a function in an environment ignoring other variables. Read more
sourcefn find_var<K: TryInto<Symbol, Error = Error>>(&self, key: K) -> Result<Robj>
fn find_var<K: TryInto<Symbol, Error = Error>>(&self, key: K) -> Result<Robj>
Find a variable in an environment. Read more
sourcefn eval_promise(&self) -> Result<Robj>
fn eval_promise(&self) -> Result<Robj>
If this object is a promise, evaluate it, otherwise return the object. Read more
sourcefn xlengthgets(&self, new_len: usize) -> Result<Robj>
fn xlengthgets(&self, new_len: usize) -> Result<Robj>
Copy a vector and resize it. See. https://github.com/hadley/r-internals/blob/master/vectors.md Read more
sourcefn alloc_vector(sexptype: u32, len: usize) -> Robj
fn alloc_vector(sexptype: u32, len: usize) -> Robj
Allocated an owned object of a certain type.
sourcefn conformable(a: &Robj, b: &Robj) -> bool
fn conformable(a: &Robj, b: &Robj) -> bool
Return true if two arrays have identical dims.
sourcefn is_function(&self) -> bool
fn is_function(&self) -> bool
Return true if this is a function or a primitive (CLOSXP, BUILTINSXP or SPECIALSXP)
sourcefn is_integer(&self) -> bool
fn is_integer(&self) -> bool
Return true if this is an integer vector (INTSXP) but not a factor.
sourcefn is_language(&self) -> bool
fn is_language(&self) -> bool
Return true if this is a language object (LANGSXP).
sourcefn is_pairlist(&self) -> bool
fn is_pairlist(&self) -> bool
Return true if this is NILSXP or LISTSXP.
sourcefn is_primitive(&self) -> bool
fn is_primitive(&self) -> bool
Return true if this is a primitive function BUILTINSXP, SPECIALSXP.
sourcefn is_user_binop(&self) -> bool
fn is_user_binop(&self) -> bool
Return true if this is a user defined binop.
sourcefn is_valid_string(&self) -> bool
fn is_valid_string(&self) -> bool
Return true if this is a valid string.
sourcefn is_valid_string_f(&self) -> bool
fn is_valid_string_f(&self) -> bool
Return true if this is a valid string.
sourcefn is_vector_atomic(&self) -> bool
fn is_vector_atomic(&self) -> bool
Return true if this is an atomic vector.
sourcefn is_vector_list(&self) -> bool
fn is_vector_list(&self) -> bool
Return true if this is a vector list.
sourcefn is_vectorizable(&self) -> bool
fn is_vectorizable(&self) -> bool
Return true if this is can be made into a vector.
fn is_missing_arg(&self) -> bool
fn is_unbound_value(&self) -> bool
fn is_package_env(&self) -> bool
fn package_env_name(&self) -> Robj
fn is_namespace_env(&self) -> bool
fn namespace_env_spec(&self) -> Robj
sourcefn is_altinteger(&self) -> bool
fn is_altinteger(&self) -> bool
Returns true
if this is an integer ALTREP object.
sourcefn is_altreal(&self) -> bool
fn is_altreal(&self) -> bool
Returns true
if this is an real ALTREP object.
sourcefn is_altlogical(&self) -> bool
fn is_altlogical(&self) -> bool
Returns true
if this is an logical ALTREP object.
sourcefn is_altstring(&self) -> bool
fn is_altstring(&self) -> bool
Returns true
if this is an integer ALTREP object.
sourceimpl Slices for Pairlist
impl Slices for Pairlist
as_typed_slice_raw() etc.
impl StructuralPartialEq for Pairlist
Auto Trait Implementations
impl RefUnwindSafe for Pairlist
impl !Send for Pairlist
impl !Sync for Pairlist
impl Unpin for Pairlist
impl UnwindSafe for Pairlist
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more