Inputs and Outputs

For items to be reusable, its inputs and outputs are API.

%3cluster_acluster_a_paramscluster_bcluster_b_paramscluster_ccluster_c_paramsaaa_state FileDownload Statepath:PathBufmd5:Md5Sumbba->ba_text📥filedownloada_params_srcsrca_params_destdestb_stateS3BucketStatename:String ccb->cb_text🪣s3bucketb_params_namenamec_state S3Object State..c_text📤s3objectc_params_file_pathfile_pathc_params_bucket_namebucket_namec_params_object_keyobject_key

Item API

impl<Id> Item for FileDownloadItem<Id>
{
    type Params<'exec> = FileDownloadParams<Id>;
    type State = FileDownloadState;
    // ..
}

Input:

pub struct FileDownloadParams<Id> {
    src: Url,
    dest: PathBuf,
    marker: PhantomData<Id>,
}


Output:

pub enum FileDownloadState {
    None,
    Some {
        path: PathBuf,
        md5: Md5Sum,
    },
}