mirror of
https://git.asonix.dog/asonix/activitystreams.git
synced 2024-11-22 11:51:00 +00:00
Move to TryFrom/TryInto for set methods
This commit is contained in:
parent
96579dc168
commit
3239b7daa7
2 changed files with 64 additions and 59 deletions
|
@ -529,12 +529,13 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
if field.description.required {
|
if field.description.required {
|
||||||
if field.description.functional {
|
if field.description.functional {
|
||||||
let set = quote! {
|
let set = quote! {
|
||||||
pub fn #set_ident<T>(&mut self, item: T) -> &mut Self
|
pub fn #set_ident<T>(&mut self, item: T) -> Result<&mut Self, <T as std::convert::TryInto<#v_ty>>::Error>
|
||||||
where
|
where
|
||||||
T: Into<#v_ty>
|
T: std::convert::TryInto<#v_ty>,
|
||||||
{
|
{
|
||||||
self.#fname = item.into();
|
use std::convert::TryInto;
|
||||||
self
|
self.#fname = item.try_into()?;
|
||||||
|
Ok(self)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -550,12 +551,13 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let set = quote! {
|
let set = quote! {
|
||||||
pub fn #set_ident<T>(&mut self, item: T) -> &mut Self
|
pub fn #set_ident<T>(&mut self, item: T) -> Result<&mut Self, <T as std::convert::TryInto<#v_ty>>::Error>
|
||||||
where
|
where
|
||||||
T: Into<#v_ty>
|
T: std::convert::TryInto<#v_ty>,
|
||||||
{
|
{
|
||||||
self.#fname = #enum_ty::Term(item.into());
|
use std::convert::TryInto;
|
||||||
self
|
self.#fname = #enum_ty::Term(item.try_into()?);
|
||||||
|
Ok(self)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -569,13 +571,13 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
};
|
};
|
||||||
|
|
||||||
let set_many = quote! {
|
let set_many = quote! {
|
||||||
pub fn #set_many_ident<T>(&mut self, item: Vec<T>) -> &mut Self
|
pub fn #set_many_ident<T>(&mut self, item: Vec<T>) -> Result<&mut Self, <T as std::convert::TryInto<#v_ty>>::Error>
|
||||||
where
|
where
|
||||||
T: Into<#v_ty>,
|
T: std::convert::TryInto<#v_ty>,
|
||||||
{
|
{
|
||||||
let item: Vec<#v_ty> = item.into_iter().map(Into::into).collect();
|
let item: Vec<#v_ty> = item.into_iter().map(std::convert::TryInto::try_into).collect::<Result<Vec<_>, _>>()?;
|
||||||
self.#fname = #enum_ty::Array(item);
|
self.#fname = #enum_ty::Array(item);
|
||||||
self
|
Ok(self)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -598,12 +600,13 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
} else {
|
} else {
|
||||||
if field.description.functional {
|
if field.description.functional {
|
||||||
let set = quote! {
|
let set = quote! {
|
||||||
pub fn #set_ident<T>(&mut self, item: T) -> &mut Self
|
pub fn #set_ident<T>(&mut self, item: T) -> Result<&mut Self, <T as std::convert::TryInto<#v_ty>>::Error>
|
||||||
where
|
where
|
||||||
T: Into<#v_ty>
|
T: std::convert::TryInto<#v_ty>,
|
||||||
{
|
{
|
||||||
self.#fname = Some(item.into());
|
use std::convert::TryInto;
|
||||||
self
|
self.#fname = Some(item.try_into()?);
|
||||||
|
Ok(self)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -619,12 +622,13 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let set = quote! {
|
let set = quote! {
|
||||||
pub fn #set_ident<T>(&mut self, item: T) -> &mut Self
|
pub fn #set_ident<T>(&mut self, item: T) -> Result<&mut Self, <T as std::convert::TryInto<#v_ty>>::Error>
|
||||||
where
|
where
|
||||||
T: Into<#v_ty>
|
T: std::convert::TryInto<#v_ty>,
|
||||||
{
|
{
|
||||||
self.#fname = Some(#enum_ty::Term(item.into()));
|
use std::convert::TryInto;
|
||||||
self
|
self.#fname = Some(#enum_ty::Term(item.try_into()?));
|
||||||
|
Ok(self)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -638,13 +642,13 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
};
|
};
|
||||||
|
|
||||||
let set_many = quote! {
|
let set_many = quote! {
|
||||||
pub fn #set_many_ident<T>(&mut self, item: Vec<T>) -> &mut Self
|
pub fn #set_many_ident<T>(&mut self, item: Vec<T>) -> Result<&mut Self, <T as std::convert::TryInto<#v_ty>>::Error>
|
||||||
where
|
where
|
||||||
T: Into<#v_ty>,
|
T: std::convert::TryInto<#v_ty>,
|
||||||
{
|
{
|
||||||
let item: Vec<#v_ty> = item.into_iter().map(Into::into).collect();
|
let item: Vec<#v_ty> = item.into_iter().map(std::convert::TryInto::try_into).collect::<Result<Vec<_>, _>>()?;
|
||||||
self.#fname = Some(#enum_ty::Array(item));
|
self.#fname = Some(#enum_ty::Array(item));
|
||||||
self
|
Ok(self)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -678,13 +682,14 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
|
|
||||||
if field.description.required {
|
if field.description.required {
|
||||||
let set = quote! {
|
let set = quote! {
|
||||||
pub fn #set_ident<T>(&mut self, item: T) -> &mut Self
|
pub fn #set_ident<T>(&mut self, item: T) -> Result<&mut Self, <T as std::convert::TryInto<#v_ty>>::Error>
|
||||||
where
|
where
|
||||||
T: Into<#v_ty>,
|
T: std::convert::TryInto<#v_ty>,
|
||||||
{
|
{
|
||||||
let item: #v_ty = item.into();
|
use std::convert::TryInto;
|
||||||
|
let item: #v_ty = item.try_into()?;
|
||||||
self.#fname = item.into();
|
self.#fname = item.into();
|
||||||
self
|
Ok(self)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -703,13 +708,14 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let set = quote! {
|
let set = quote! {
|
||||||
pub fn #set_ident<T>(&mut self, item: T) -> &mut Self
|
pub fn #set_ident<T>(&mut self, item: T) -> Result<&mut Self, <T as std::convert::TryInto<#v_ty>>::Error>
|
||||||
where
|
where
|
||||||
T: Into<#v_ty>,
|
T: std::convert::TryInto<#v_ty>,
|
||||||
{
|
{
|
||||||
let item: #v_ty = item.into();
|
use std::convert::TryInto;
|
||||||
|
let item: #v_ty = item.try_into()?;
|
||||||
self.#fname = Some(item.into());
|
self.#fname = Some(item.into());
|
||||||
self
|
Ok(self)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -752,14 +758,15 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
|
|
||||||
if field.description.required {
|
if field.description.required {
|
||||||
let set = quote! {
|
let set = quote! {
|
||||||
pub fn #set_ident<T>(&mut self, item: T) -> &mut Self
|
pub fn #set_ident<T>(&mut self, item: T) -> Result<&mut Self, <T as std::convert::TryInto<#v_ty>>::Error>
|
||||||
where
|
where
|
||||||
T: Into<#v_ty>,
|
T: std::convert::TryInto<#v_ty>,
|
||||||
{
|
{
|
||||||
let item: #v_ty = item.into();
|
use std::convert::TryInto;
|
||||||
|
let item: #v_ty = item.try_into()?;
|
||||||
let item: #term_ty = item.into();
|
let item: #term_ty = item.into();
|
||||||
self.#fname = item.into();
|
self.#fname = item.into();
|
||||||
self
|
Ok(self)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -773,14 +780,14 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
};
|
};
|
||||||
|
|
||||||
let set_many = quote! {
|
let set_many = quote! {
|
||||||
pub fn #set_many_ident<T>(&mut self, item: Vec<T>) -> &mut Self
|
pub fn #set_many_ident<T>(&mut self, item: Vec<T>) -> Result<&mut Self, <T as std::convert::TryInto<#v_ty>>::Error>
|
||||||
where
|
where
|
||||||
T: Into<#v_ty>,
|
T: std::convert::TryInto<#v_ty>,
|
||||||
{
|
{
|
||||||
let item: Vec<#v_ty> = item.into_iter().map(Into::into).collect();
|
let item: Vec<#v_ty> = item.into_iter().map(std::convert::TryInto::try_into).collect::<Result<Vec<_>, _>>()?;
|
||||||
let item: Vec<#term_ty> = item.into_iter().map(Into::into).collect();
|
let item: Vec<#term_ty> = item.into_iter().map(Into::into).collect();
|
||||||
self.#fname = item.into();
|
self.#fname = item.into();
|
||||||
self
|
Ok(self)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -801,14 +808,15 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let set = quote! {
|
let set = quote! {
|
||||||
pub fn #set_ident<T>(&mut self, item: T) -> &mut Self
|
pub fn #set_ident<T>(&mut self, item: T) -> Result<&mut Self, <T as std::convert::TryInto<#v_ty>>::Error>
|
||||||
where
|
where
|
||||||
T: Into<#v_ty>,
|
T: std::convert::TryInto<#v_ty>,
|
||||||
{
|
{
|
||||||
let item: #v_ty = item.into();
|
use std::convert::TryInto;
|
||||||
|
let item: #v_ty = item.try_into()?;
|
||||||
let item: #term_ty = item.into();
|
let item: #term_ty = item.into();
|
||||||
self.#fname = Some(item.into());
|
self.#fname = Some(item.into());
|
||||||
self
|
Ok(self)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -822,14 +830,14 @@ pub fn properties(tokens: TokenStream) -> TokenStream {
|
||||||
};
|
};
|
||||||
|
|
||||||
let set_many = quote! {
|
let set_many = quote! {
|
||||||
pub fn #set_many_ident<T>(&mut self, item: Vec<T>) -> &mut Self
|
pub fn #set_many_ident<T>(&mut self, item: Vec<T>) -> Result<&mut Self, <T as std::convert::TryInto<#v_ty>>::Error>
|
||||||
where
|
where
|
||||||
T: Into<#v_ty>,
|
T: std::convert::TryInto<#v_ty>,
|
||||||
{
|
{
|
||||||
let item: Vec<#v_ty> = item.into_iter().map(Into::into).collect();
|
let item: Vec<#v_ty> = item.into_iter().map(std::convert::TryInto::try_into).collect::<Result<Vec<_>, _>>()?;
|
||||||
let item: Vec<#term_ty> = item.into_iter().map(Into::into).collect();
|
let item: Vec<#term_ty> = item.into_iter().map(Into::into).collect();
|
||||||
self.#fname = Some(item.into());
|
self.#fname = Some(item.into());
|
||||||
self
|
Ok(self)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,16 @@
|
||||||
use activitystreams::{
|
use activitystreams::object::Video;
|
||||||
object::Video,
|
|
||||||
primitives::{MimeMediaType, XsdAnyUri, XsdDuration},
|
|
||||||
};
|
|
||||||
|
|
||||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let mut v = Video::default();
|
let mut v = Video::default();
|
||||||
|
|
||||||
v.as_mut()
|
v.as_mut()
|
||||||
.set_context_xsd_any_uri("https://www.w3.org/ns/activitystreams".parse::<XsdAnyUri>()?)
|
.set_context_xsd_any_uri("https://www.w3.org/ns/activitystreams")?
|
||||||
.set_id("https://example.com/@example/lions".parse::<XsdAnyUri>()?)
|
.set_id("https://example.com/@example/lions")?
|
||||||
.set_url_xsd_any_uri("https://example.com/@example/lions/video.webm".parse::<XsdAnyUri>()?)
|
.set_url_xsd_any_uri("https://example.com/@example/lions/video.webm")?
|
||||||
.set_name_xsd_string("My Cool Video")
|
.set_name_xsd_string("My Cool Video")?
|
||||||
.set_summary_xsd_string("A video about some cool lions")
|
.set_summary_xsd_string("A video about some cool lions")?
|
||||||
.set_media_type("video/webm".parse::<MimeMediaType>()?)
|
.set_media_type("video/webm")?
|
||||||
.set_duration("PT4M20S".parse::<XsdDuration>()?);
|
.set_duration("PT4M20S")?;
|
||||||
|
|
||||||
println!("Video, {:#?}", v);
|
println!("Video, {:#?}", v);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue