extendr_api::wrapper

Module s4

Source
Expand description

S4 class support.

It is not possible to create an S4 class from R’s C-API, and thus it is not possible to do so in Rust. But an S4 class can be instantiated.

Thus, the S4 class definition must be evaluated prior to using S4::new. Conveniently, to inline the defintion of an S4 class with R, one can use S4::set_class.

Ideally, in an R-package setting, there will be no calls to set_class, and the definition of an S4-class will be present in the /R folder.

person_class <- setClass(
  "person",
  slots = c(name = "character", age = "integer")
)

person_class(name = "Lubo", age = 74L)
#> An object of class "person"
#> Slot "name":
#> [1] "Lubo"
#>
#> Slot "age":
#> [1] 74

Now, person can be instantiated from Rust.

Structs§