chore: declare and check MSRV (#1034)
* chore: declare and check MSRV * fix: clippy fixes for collapsing if-statements * ci: add explicit contents read permission to MSRV job
This commit is contained in:
parent
e660b805ee
commit
76988023b2
3 changed files with 322 additions and 315 deletions
|
|
@ -55,17 +55,15 @@ pub fn extract_doc_line(
|
|||
/// Returns the full Parameters<T> type if found
|
||||
pub fn find_parameters_type_in_sig(sig: &Signature) -> Option<Box<Type>> {
|
||||
sig.inputs.iter().find_map(|input| {
|
||||
if let FnArg::Typed(pat_type) = input {
|
||||
if let Type::Path(type_path) = &*pat_type.ty {
|
||||
if type_path
|
||||
.path
|
||||
.segments
|
||||
.last()
|
||||
.is_some_and(|type_name| type_name.ident == "Parameters")
|
||||
{
|
||||
return Some(pat_type.ty.clone());
|
||||
}
|
||||
}
|
||||
if let FnArg::Typed(pat_type) = input
|
||||
&& let Type::Path(type_path) = &*pat_type.ty
|
||||
&& type_path
|
||||
.path
|
||||
.segments
|
||||
.last()
|
||||
.is_some_and(|type_name| type_name.ident == "Parameters")
|
||||
{
|
||||
return Some(pat_type.ty.clone());
|
||||
}
|
||||
None
|
||||
})
|
||||
|
|
|
|||
|
|
@ -132,13 +132,13 @@ pub fn prompt(attr: TokenStream, input: TokenStream) -> syn::Result<TokenStream>
|
|||
// 3. make body: { Box::pin(async move { #body }) }
|
||||
let new_output = syn::parse2::<ReturnType>({
|
||||
let mut lt = quote! { 'static };
|
||||
if let Some(receiver) = fn_item.sig.receiver() {
|
||||
if let Some((_, receiver_lt)) = receiver.reference.as_ref() {
|
||||
if let Some(receiver_lt) = receiver_lt {
|
||||
lt = quote! { #receiver_lt };
|
||||
} else {
|
||||
lt = quote! { '_ };
|
||||
}
|
||||
if let Some(receiver) = fn_item.sig.receiver()
|
||||
&& let Some((_, receiver_lt)) = receiver.reference.as_ref()
|
||||
{
|
||||
if let Some(receiver_lt) = receiver_lt {
|
||||
lt = quote! { #receiver_lt };
|
||||
} else {
|
||||
lt = quote! { '_ };
|
||||
}
|
||||
}
|
||||
match &fn_item.sig.output {
|
||||
|
|
|
|||
|
|
@ -7,16 +7,13 @@ use crate::common::extract_doc_line;
|
|||
|
||||
/// Check if a type is Json<T> and extract the inner type T
|
||||
fn extract_json_inner_type(ty: &syn::Type) -> Option<&syn::Type> {
|
||||
if let syn::Type::Path(type_path) = ty {
|
||||
if let Some(last_segment) = type_path.path.segments.last() {
|
||||
if last_segment.ident == "Json" {
|
||||
if let syn::PathArguments::AngleBracketed(args) = &last_segment.arguments {
|
||||
if let Some(syn::GenericArgument::Type(inner_type)) = args.args.first() {
|
||||
return Some(inner_type);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if let syn::Type::Path(type_path) = ty
|
||||
&& let Some(last_segment) = type_path.path.segments.last()
|
||||
&& last_segment.ident == "Json"
|
||||
&& let syn::PathArguments::AngleBracketed(args) = &last_segment.arguments
|
||||
&& let Some(syn::GenericArgument::Type(inner_type)) = args.args.first()
|
||||
{
|
||||
return Some(inner_type);
|
||||
}
|
||||
None
|
||||
}
|
||||
|
|
@ -286,13 +283,13 @@ pub fn tool(attr: TokenStream, input: TokenStream) -> syn::Result<TokenStream> {
|
|||
let omit_send = cfg!(feature = "local") || attribute.local;
|
||||
let new_output = syn::parse2::<ReturnType>({
|
||||
let mut lt = quote! { 'static };
|
||||
if let Some(receiver) = fn_item.sig.receiver() {
|
||||
if let Some((_, receiver_lt)) = receiver.reference.as_ref() {
|
||||
if let Some(receiver_lt) = receiver_lt {
|
||||
lt = quote! { #receiver_lt };
|
||||
} else {
|
||||
lt = quote! { '_ };
|
||||
}
|
||||
if let Some(receiver) = fn_item.sig.receiver()
|
||||
&& let Some((_, receiver_lt)) = receiver.reference.as_ref()
|
||||
{
|
||||
if let Some(receiver_lt) = receiver_lt {
|
||||
lt = quote! { #receiver_lt };
|
||||
} else {
|
||||
lt = quote! { '_ };
|
||||
}
|
||||
}
|
||||
match &fn_item.sig.output {
|
||||
|
|
|
|||
Loading…
Reference in a new issue