Skip to content

Commit f1542f9

Browse files
committed
Fix serde feature
1 parent 021caf7 commit f1542f9

File tree

4 files changed

+13
-9
lines changed

4 files changed

+13
-9
lines changed

rustler/src/serde/de.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
use crate::serde::{atoms, error::Error, util};
2-
use crate::{
3-
types::{ListIterator, MapIterator},
4-
Term, TermType,
5-
};
2+
use crate::{ListIterator, MapIterator, Term, TermType};
63
use serde::{
74
de::{
85
self, Deserialize, DeserializeSeed, EnumAccess, MapAccess, SeqAccess, VariantAccess,

rustler/src/serde/ser.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::io::Write;
22

33
use crate::serde::{atoms, error::Error, util};
44
use crate::wrapper::list::make_list;
5-
use crate::{types::tuple, Encoder, Env, OwnedBinary, Term};
5+
use crate::{Encoder, Env, OwnedBinary, Term, Tuple};
66
use serde::ser::{self, Serialize};
77

88
#[inline]
@@ -336,7 +336,7 @@ impl<'a> SequenceSerializer<'a> {
336336

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

rustler/src/serde/util.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::serde::{atoms, Error};
2-
use crate::{types::tuple, Binary, Decoder, Encoder, Env, Term};
2+
use crate::{Binary, Decoder, Encoder, Env, Term, Tuple};
33

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

65-
let tuple = tuple::get_tuple(term).or(Err(Error::ExpectedTuple))?;
65+
let tuple = Tuple::try_from(term)
66+
.or(Err(Error::ExpectedTuple))?
67+
.to_vec();
68+
6669
match len {
6770
None => Ok(tuple),
6871
Some(len) => {

rustler/src/wrapped_types/tuple.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use crate::{Decoder, Encoder, Env, Error, NifResult, Term, TermType};
21
use crate::sys::{enif_get_tuple, enif_make_tuple_from_array, ERL_NIF_TERM};
2+
use crate::{Decoder, Encoder, Env, Error, NifResult, Term, TermType};
33

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

2929
impl<'a> Tuple<'a> {
30+
pub fn make(env: Env<'a>, terms: &[Term<'a>]) -> Term<'a> {
31+
make_tuple(env, terms)
32+
}
33+
3034
pub fn size(&self) -> usize {
3135
self.get_elements().len()
3236
}

0 commit comments

Comments
 (0)