Can't retrieve customer if i haven't got `CustomerId` which only can be got from creating a customer
vincent-thomas opened this issue · 3 comments
Describe the bug
When i try to retrieve a customer from Customer::retrieve()
i need to input from the struct Customerid
. Which has a private field, and no functions that create a CustomerId
, so its impossible to retrieve a customer, without having to create it in the same code block
To Reproduce
let test = Customer::retrieve(&c.stripe, &CustomerId("test"), &[".."]); // Error: error[E0423]: cannot initialize a tuple struct which contains private fields
On some inspection, the macro definition looks like this
#[derive(Clone, Debug, Default, Eq, PartialEq, Hash)]
pub struct $struct_name(/* private field => can't initialize myself */ smol_str::SmolStr);
If making the field pub it would make it possible to get customers without creating them
Expected behavior
To be able to create a CustomerId
, for then to retrieve the Customer
Code snippets
No response
OS
Not relevant
Rust version
1.77.0-nightly - but not relevant
Library version
0.31.0
API version
2023-10-16
Additional context
No response
Hello! Maybe what you are looking for is from_str
.
let customer_id = CustomerId::from_str("test")?;
let customer = Customer::retrieve(&client, &customer_id, &[]).await?;
Thank you this did work. Maybe implement the trait From<&str> and From to follow that convention too? I know this is codegen so i don't think i can implement it but i think this would be a good idea.
Correction TryFrom<&str>
trait as .from_str() returns Result