Skip to content

Commit

Permalink
Fix serde feature
Browse files Browse the repository at this point in the history
  • Loading branch information
filmor committed Jan 12, 2025
1 parent 88c8f7e commit ff8e419
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 9 deletions.
5 changes: 1 addition & 4 deletions rustler/src/serde/de.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
use crate::serde::{atoms, error::Error, util};
use crate::{
types::{ListIterator, MapIterator},
Term, TermType,
};
use crate::{ListIterator, MapIterator, Term, TermType};
use serde::{
de::{
self, Deserialize, DeserializeSeed, EnumAccess, MapAccess, SeqAccess, VariantAccess,
Expand Down
4 changes: 2 additions & 2 deletions rustler/src/serde/ser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use std::io::Write;

use crate::serde::{atoms, error::Error, util};
use crate::wrapper::list::make_list;
use crate::{types::tuple, Encoder, Env, OwnedBinary, Term};
use crate::{Encoder, Env, OwnedBinary, Term, Tuple};
use serde::ser::{self, Serialize};

#[inline]
Expand Down Expand Up @@ -336,7 +336,7 @@ impl<'a> SequenceSerializer<'a> {

#[inline]
fn to_tuple(&self) -> Result<Term<'a>, Error> {
Ok(tuple::make_tuple(self.ser.env, &self.items))
Ok(Tuple::make(self.ser.env, &self.items))
}
}

Expand Down
7 changes: 5 additions & 2 deletions rustler/src/serde/util.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::serde::{atoms, Error};
use crate::{types::tuple, Binary, Decoder, Encoder, Env, Term};
use crate::{Binary, Decoder, Encoder, Env, Term, Tuple};

/// Converts an `&str` to either an existing atom or an Elixir bitstring.
pub fn str_to_term<'a>(env: &Env<'a>, string: &str) -> Result<Term<'a>, Error> {
Expand Down Expand Up @@ -62,7 +62,10 @@ pub fn validate_tuple(term: Term, len: Option<usize>) -> Result<Vec<Term>, Error
return Err(Error::ExpectedTuple);
}

let tuple = tuple::get_tuple(term).or(Err(Error::ExpectedTuple))?;
let tuple = Tuple::try_from(term)
.or(Err(Error::ExpectedTuple))?
.to_vec();

match len {
None => Ok(tuple),
Some(len) => {
Expand Down
6 changes: 5 additions & 1 deletion rustler/src/wrapped_types/tuple.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::{Decoder, Encoder, Env, Error, NifResult, Term, TermType};
use crate::sys::{enif_get_tuple, enif_make_tuple_from_array, ERL_NIF_TERM};
use crate::{Decoder, Encoder, Env, Error, NifResult, Term, TermType};

use std::ffi::c_int;
use std::mem::MaybeUninit;
Expand Down Expand Up @@ -27,6 +27,10 @@ pub unsafe fn get_tuple<'a>(term: Term<'a>) -> NifResult<&'a [ERL_NIF_TERM]> {
}

impl<'a> Tuple<'a> {
pub fn make(env: Env<'a>, terms: &[Term<'a>]) -> Term<'a> {
make_tuple(env, terms)
}

pub fn size(&self) -> usize {
self.get_elements().len()
}
Expand Down

0 comments on commit ff8e419

Please sign in to comment.