gpt4 book ai didi

rust - 是否可以将元组结构构造函数传递给函数以返回不同类型的值?

转载 作者:行者123 更新时间:2023-11-29 08:04:29 25 4
gpt4 key购买 nike

是否可以将不同的结构构造函数传递给一个函数,以便它可以返回使用这些构造函数创建的不同值?

例如,我可能会传递 String10String20createString它应该根据传入的构造函数创建不同类型的值。

我不知道如何设置 ctor 的类型也不是返回类型。我尝试了一个通用的 <T>没有成功。

pub struct String10(String);
pub struct String20(String);

impl String10 {
pub fn create(fieldName: &str, str: &str) -> String10 {
// Failed to pass `String10` as a constructor to createString
createString(fieldName, String10, 10, str)
}
}

impl String20 {
// same failure here
pub fn create(fieldName: &str, str: &str) -> String10 {
createString(fieldName, String20, 20, str)
}
}

// Not sure what's the type for ctor and the return type?
pub fn createString<T>(fieldName: &str, ctor: T, maxLen: u32, str: &str) -> T {
ctor(str);
}

最佳答案

元组结构构造函数是函数。您可以将函数和闭包作为参数传递给其他函数。

pub struct String10(String);
pub struct String20(String);

impl String10 {
pub fn create(field_name: &str, s: &str) -> String10 {
create_string(field_name, String10, 10, s)
}
}

impl String20 {
pub fn create(field_name: &str, s: &str) -> String20 {
create_string(field_name, String20, 20, s)
}
}

pub fn create_string<T>(
_field_name: &str,
ctor: impl FnOnce(String) -> T,
_max_len: u32,
s: &str,
) -> T {
ctor(s.to_string())
}

另见:

关于rust - 是否可以将元组结构构造函数传递给函数以返回不同类型的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58736827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com