miden_stark_transcript/
data.rs1use alloc::vec::Vec;
4
5use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Debug, Serialize, Deserialize)]
9#[serde(bound(serialize = "F: Serialize, C: Serialize"))]
10#[serde(bound(deserialize = "F: Deserialize<'de>, C: Deserialize<'de>"))]
11pub struct TranscriptData<F, C> {
12 fields: Vec<F>,
13 commitments: Vec<C>,
14}
15
16impl<F, C> TranscriptData<F, C> {
17 pub fn new(fields: Vec<F>, commitments: Vec<C>) -> Self {
19 Self { fields, commitments }
20 }
21
22 pub fn fields(&self) -> &[F] {
24 &self.fields
25 }
26
27 pub fn commitments(&self) -> &[C] {
29 &self.commitments
30 }
31
32 pub fn as_slices(&self) -> (&[F], &[C]) {
34 (&self.fields, &self.commitments)
35 }
36
37 pub fn into_parts(self) -> (Vec<F>, Vec<C>) {
39 (self.fields, self.commitments)
40 }
41
42 pub fn size_in_bytes(&self) -> usize {
44 size_of_val(self.fields.as_slice()) + size_of_val(self.commitments.as_slice())
45 }
46}